Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LabCi-IPPT_final.doc
Скачиваний:
4
Добавлен:
27.04.2019
Размер:
1.12 Mб
Скачать

Приклад виконання лабораторної роботи

Постановка задачі. Написати програму, яка здійснює сортування елементів масиву за спаданням значень. В програмі використати динамічне виділення пам’яті для масиву. Всі операції з елементами масиву здійснювати тільки за допомогою вказівників. Крім цього на екран повинно виводитися прізвище та ім'я автора, номер групи та назва програми.

Граф-схема алгоритму програми

Блок 1 – початок алгоритму.

Блок 2 – виділення пам’яті для елементів масиву

Блок 3 – введення з клавіатури елементів масиву

Блоки 3-12 – сортування масиву за зменшенням

Блок 13 – виведення елементів відсортованого масиву на екран.

Блок 14 – закінчення алгоритму.

Код програми мовою с

# include <stdio.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{ int *massive;

int kilk,max,tmp;

int k,i,j,m;

puts("(c)Kuznetsova K.A.");

puts("Sortyvanja masuvy po zmenshenju");

puts("Vvedit kilkist elementiv masuvy");

scanf("%d",&kilk);

printf("Vvedit %d elementiv masuvy\n",kilk);

massive=(int*)calloc(kilk,sizeof(int));

for (k=0;k<kilk;k++){

scanf("%d",(massive+k));}

for (i=1;i<kilk;i++){

max=*(massive+i);

for (j=i+1;j<kilk;j++)

{if (*(massive+j)>max) max=*(massive+j);}

int l=i;

while (*(massive+l)!=max) l++;

tmp=*(massive+l);

*(massive+l)=*(massive+i);

*(massive+i)=tmp;}

printf("Vidsortovanuj za spadannyam masuv:\n");

for (m=0;m<kilk;m++) {

printf("\n%d\n",*(massive+m));

}

puts("");

system("PAUSE");

return 0;

}

Тестовий приклад

Нехай введений масив

9 6 45 8 1 67 -4 35 -10 17

На екрані маємо отримати наступне повідомлення:

Vidsortovanuj po zmenshenju masuv

67 45 35 17 10 9 8 6 4 1

Результати виконання

Контрольні запитання

  1. Яка різниця між вказівником на змінну і самою змінною?

  2. Змінна дійсного типу знаходиться в комірці пам’яті з адресою 1000. На цю змінну вказує вказівник р1. На яку комірку пам’яті вкаже вказівник якщо здійснити таку операцію: р1++?

  3. Як пов’язані між собою вказівник на масив та ім’я масиву?

  4. Які функції динамічного розподілу пам’яті ви знаєте?

  5. Яка різниця між статичним і динамічним заданням масивів?

  6. Як ініціалізувати за допомогою вказівника елемент двовимірного масиву, який знаходиться на перетині 3-го рядка і 6-го стовпця?

  7. Як вивільнити динамічну пам’ять, яка виділена для масиву?

  8. Яка різниця між функціями malloc() та calloc()?

  9. Чому в програмі не можна використовувати не ініціалізовані вказівники?

  10. Який файл-заголовок необхідно підключити до програми, щоб використати функції динамічного розподілу пам’яті?

Лабораторна робота № 10 Програмування задач на використання структур даних.

Мета роботи: вивчити способи оголошення, ініціалізації структур, масивів структур та здобути практичні навички роботи з ними.

Постановка задачі. Написати програму, яка здійснює опрацювання масиву структур згідно заданого варіанту. Масив структур повинен містити не менше 10-ти елементів. Масив ввести з клавіатури. Програма повинна видавати підказку користувачу про те який елемент вводити.

Варіанти індивідуальних завдань

  1. Написати програму, яка вводить масив записів про автомобілі (модель, рік випуску, ціна , колір, потужність двигуна). Програма повинна знайти і вивести на екран дані про автомобілі червоного кольору, які випущені після 2002 року і коштують менше 20000 грн.

  2. Написати програму, яка вводить масив записів про персональні комп’ютери (Тип процесора, об’єм ОЗП, тип і об’єм жорсткого диску, наявність окремої відеокарти). Програма повинна знайти і вивести на екран дані про комп’ютери, у яких об’єм ОЗП більший 256 МБ і є окрема відеокарта.

  3. Написати програму, яка вводить масив записів про мобільні телефони (виробник, модель, об’єм пам’яті, наявність фотокамери, наявність МР3 – плеєра, ціна). Програма повинна знайти і вивести на екран дані про телефони фірми Motorola без камери і з МР3 – плеєром.

  4. Написати програму, яка вводить масив записів про цифрові фотоапарати (виробник, модель, наявність оптичного збільшення, кратність оптичного збільшення, тип інтерфейсу, об’єм пам’яті, ціна). Програма повинна знайти і вивести на екран дані про фотоапарати у яких об’єм пам’яті перевищує 64 МБ, які мають оптичне збільшення та USB інтерфейс.

  5. Написати програму, яка вводить масив записів про студентів (Прізвище, ім’я, рік народження, група, рейтинг, стать). Програма повинна знайти і вивести на екран прізвища та ініціали студентів у яких рейтинг менший 50 балів.

  6. Написати програму, яка вводить масив записів про телевізори (модель, діагональ екрана, ціна, наявність супутникового тюнера, кількість систем декодування кольору). Програма повинна знайти і вивести на екран дані про телевізори з діагоналлю екрану менше 54 см і ціною менше 600грн.

  7. Написати програму, яка вводить масив записів про музичні центри (модель, наявність підтримки МР3 формату, вихідна потужність, ціна, наявність дистанційного керування). Програма повинна знайти і вивести на екран дані про музичні центри які підтримують МР3 і коштують менше 300 грн.

  8. Написати програму, яка вводить масив записів про країни Європи (Назва, столиця, кількість населення, площа, кількість міст). Програма повинна знайти і вивести на екран дані про країни у порядку зростання кількості населення.

  9. Написати програму, яка вводить масив записів про ріки України (Назва, басейн, довжина, площа приток, в яке море впадає). Програма повинна знайти і вивести на екран дані про річки в алфавітному порядку.

  10. Написати програму, яка вводить масив записів про наявність комплектуючих до персональних комп’ютерів на складі (назва комплектуючого, кількість, ціна, вид упаковки, постачальник, адреса). Програма повинна знайти і вивести на екран дані про постачальників, кількість комплектуючих якого є найменшою і найбільшою.

  11. Написати програму, яка вводить масив записів про працівників фірми (Прізвище, ім’я, стать, освіта, стаж роботи, посада). Програма повинна знайти і вивести на екран дані про працівників з вищою освітою впорядкованих за стажем роботи.

  12. Написати програму, яка вводить масив записів про цифрові диктофони (модель, кількість годин запису, тип інтерфейсу, ціна, наявність зарядного пристрою). Програма повинна знайти і вивести на екран дані про цифрові диктофони, які мають найбільший і найменший час запису.

  13. Написати програму, яка вводить масив записів про наявність носіїв даних в магазині (тип носія, виробник, ціна, ємність, кількість). Програма повинна знайти і вивести на екран дані про носії даних впорядкованих по зростанню ціни.

  14. Написати програму, яка вводить масив записів про пральні машини (модель, термін гарантії, ціна, споживана потужність, тип керування: механічне/електронне). Програма повинна знайти і вивести на екран дані про пральні машини з електронним керуванням впорядкованими по зменшенню споживаної потужності.

  15. Написати програму, яка вводить масив записів про відеокамери (модель, тип: цифрова/аналогова, ціна, наявність цифрового збільшення, кратність цифрового збільшення, кратність оптичного збільшення). Програма повинна знайти і вивести на екран дані про відеокамери, які не мають цифрового збільшення впорядковані по зростанню за ціною.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]