- •Методичні вказівки до виконання лабораторних та контрольних робіт із дисципліни "Програмування"
- •Порядок виконання лабораторних та контрольних робіт
- •Зміст контрольної роботи:
- •Загальні відомості
- •Int n; puts("Введіть розмір масиву");
- •Int n,m; puts("Введіть розмір масиву");
- •Int n; puts("Введіть розмір масиву структур");
- •Лабораторні роботи Лабораторна робота № 1 Робота з масивами
- •Лабораторна робота № 2 Структури та об'єднання.
- •Лабораторна робота № 3 Елементарне введення у функції
- •Лабораторна робота № 4 Прийоми використання функцій
- •Лабораторна робота № 5 Робота з файлами
- •Контрольні роботи
- •Завдання 1
- •Масиви та покажчики, масиви динамічної пам’яті
- •Варіанти завдань до програми 1.1
- •Варіанти завдань до програми 1.2
- •Завдання 2 Структури, об'єднання Варіанти завдань до програми 2.1
- •Варіанти завдань до програми 2.2
- •Завдання 3 Елементарне введення у функції Варіанти завдань до програми 3.1
- •Варіанти завдань до програми 3.2
- •Завдання 4 Прийоми використання функцій Варіанти завдань до програми 4.1
- •Варіанти завдань до програми 4.2
- •Завдання 5 Робота з файлами Варіанти завдань до програми 5.1
- •Варіанти завдань до програми 5.2
- •Контрольні питання
- •Література
Int n; puts("Введіть розмір масиву");
scanf("%d",&n); //введення розміру масиву (розмір – змінна)
int *ptri=(int*)malloc(n*sizeof(int)); //запит пам’яті
// ptri=new int*[n}; // для операцій new - delete
if(ptri==NULL) // перевірка виділення пам'яті
{puts("Помилка виділення пам'яті!"); return –1;}
// Програма
free(ptri); // звільнення пам’яті
// delete[]ptri; // для операцій new - delete
Приклад визначення двовимірного динамічного масиву:
Int n,m; puts("Введіть розмір масиву");
scanf("%d %d",&n,&m); // введення розмірів масиву
int **ma; //визначення покажчика на масив покажчиків
// запит пам'яті під масив з n покажчиків на рядки
ma=(int**)malloc(n*sizeof(int*));
// ma=new int*[n]; // для операцій new - delete
if(ma==NULL) // перевірка виділення пам'яті
{puts("Помилка виділення пам'яті!"); return -1;}
//запит пам'яті для m елементів в кожному рядку
for(int i=0;i<n;i++)
{ma[i]=(int*)malloc(m*sizeof(int)); ));
// ma[i]=new int [n]; // для операцій new - delete
if(ma[i]==NULL){puts("Помилка виділення пам'яті!");
free(ma); // delete[]ma;
return -1;} }
// програма
for(i=0;i<m;i++) free(ma[i]); //звільнення пам'яті
// delete ma[i]; //для операцій new - delete
free(ma); // звільнення пам’яті
// delete[]ma; //для операції new - delete
Структури. Це сукупність поіменованих об'єктів у загальному випадку різних типів. Кожна структура включає в себе один або декілька об'єктів (змінних, масивів, покажчиків, структур), які називають елементами (полями) структури.
Структурний тип (шаблон) визначає, скільки елементів і якого типу входять в структуру. Визначення шаблону структури починається із слова struct, за яким у фігурних дужках розміщаються описи елементів, що входять в структуру. Шаблон структури має права типу. Під шаблон пам'ять не виділяється.
Після визначення структурного типу (шаблону) за його допомогою можна визначити конкретні структури, масиви структур, покажчики на структуру. Наприклад:
struct STUDENT{char name[20];//визначення структурного типу
int age;
float r;};
STUDENT st1, st2[3],*ptrst=&st1; //визначення структур
Для звернення (доступу) до елементів структури використовуються уточнені імена. Наприклад:
st1.age=19; st1.r=4.3;
Для звернення до членів масиву структур використовується індекс, який вказують у квадратних дужках, наприклад:
cout<<st2[0].name; st2[1].age=20; st2[2].r=4.7;
При зверненні до членів структури через покажчик використовуються операція стрілка або розіменування покажчика з ім'ям елемента структури після крапки. Нижче наведені обидві форми:
ptrstage=18; (*ptrst).r=4.5;
При визначенні структури можлива її ініціалізація, тобто привласнення початкових значень елементам структури. Для цього після визначення структури ставиться знак '=' та у фігурних дужках через кому задаються значення елементів згідно структурного типу. Наприклад:
STUDENT st3={"Шевченко",20,4.9};
STUDENT st4[2]={{"Петров",20,4.4},{"Романов",19,4.3}};
Можна створювати і видаляти структури та масиви структур динамічної пам’яті. Для цього використовуються функції malloc() і free() або операцій new і delete. Нижче приведено приклад створення структури та масиву структур динамічної пам’яті:
struct REC{int a[2]; float b;};//визначення структурного типу
REC *rec1,*rec2; //визначення покажчиків на структуру
rec1=(REC*)malloc(sizeof(REC)); //запит пам'яті під структуру
// rec1=new REC; // для операцій new - delete
if(rec1==NULL) // перевірка виділення пам'яті
{puts("Помилка виділення пам'яті"); return -1;}