- •Методичні вказівки до виконання лабораторних та контрольних робіт із дисципліни "Програмування"
- •Порядок виконання лабораторних та контрольних робіт
- •Зміст контрольної роботи:
- •Загальні відомості
- •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
- •Контрольні питання
- •Література
Лабораторні роботи Лабораторна робота № 1 Робота з масивами
Мета роботи – вдосконалення навичок роботи з двовимірними масивами та масивами динамічної пам’яті.
Програма 1.1. В програмі розглядається можливість різного доступу до елементів двовимірного масиву (через індекси та розіменування покажчика).
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
const N=4, M=3;
int A[N][M];
int main()
{clrscr();
randomize(); //запуск генератора випадкових чисел
int i,j;
puts("\nзаповнюємо масив випадковими числами:");
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
{A[i][j]=random(100)-50;
printf("%5d",A[i][j]); }
printf("\n"); }
puts("\nдоступ до елементiв масиву через покажчики:");
//Змiнюємо елементи першого стовпця матрицi
for(i=0;i<N;i++) *(*(A+i))=100+2*i;
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
printf("%5d\n",*(*(A+i)+j));
printf("\n"); }
puts("\nдоступ через покажчики та індекси:");
//Змінюємо від’ємні елементи матриці
for(j=0;j<N*M;j++)
if(*(A[0]+j)<0) *(A[0]+j)=-*(A[0]+j);
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
printf("%5d",(*(A+i))[j]);
printf("\n"); }
puts("Press any key..."); getch(); return 0;}
Вказівка до програми 1.1: Розробіть програму, в якій визначте двовимірний масив цілих чисел розміром 5 на 6, заповніть його випадковими числами від –40 до +100. Потім замінить нулями ті його елементи масиву, що менше 50. Виведіть на екран елементів масиву до та після зміни. Для доступу до елементів масиву використовуйте різні способи.
Програма 1.2 В програмі створюється динамічний масив для змінних типу int. Розмір масиву та значення елементів масиву вводяться з клавіатури. По закінченні роботи з масивом пам'ять звільняється.
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
int main()
{clrscr();
int n;
int *ptr; //визначення покажчика на масив чисел типу int
puts("Введіть розмір масиву");
scanf("%d",&n);
ptr=(int*)malloc(n*sizeof(int)); //запит пам’яті
// ptr=new int[n];
if(ptr==NULL) //перевiрка виділення пам’яті
{puts("Error"); return -1;}
puts("Введіть елементи масиву");
for(int i=0;i<n;i++)
scanf("%d",&ptr[i]);
puts("Ви ввели масив");
for(i=0;i<n;i++)
printf("%d ",*(ptr+i));
free(ptr); //звільнення пам'яті
// delete [] ptr;
puts("\nPress any key...");
getch();
return 0;}
Вказівка до програми 1.2: Розробіть програму, в який створюється динамічний масив для змінних типу double з використанням операції new. Розмір масиву вводиться з клавіатури. Масив заповніть випадковими числами у діапазоні від -32.00 до +32.00 та виведіть на екран. Потім звільніть пам’ять.
Програма 1.3 В програмі створюються двовимірні динамічні квадратні матриці. Розмір матриць вводиться з клавіатури. Значення елементів першої матриці вводяться з клавіатури, а другої – заповнюються випадковими числами від -50 до +50. Потім в другу матрицю заносяться суми елементів обох матриць.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{clrscr();
int i,j,N;
printf("Введіть порядок квадратної матриці: ");
scanf("%u",&N);
int **matr; // покажчик на масив покажчиків
matr=new int*[N]; // запит пам’яті для масиву покажчиків
if(matr==NULL) //перевiрка виділення пам’яті
{puts("Масив не створено!"); return -1;}
for(i=0;i<N;i++)
{matr[i]=new int[N]; // запит пам’яті для елементів рядків
if(matr[i]==NULL){puts("Масив не створено!");
delete [] matr; return -2;}
}
puts("\n Введіть значення елементів матриці matr:”);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf(“%d”, &matr[i][j]);
puts("\n\tМатриця matr:”);
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%8d", matr[i][j]);
printf("\n"); }
int **mas;//Покажчик на масив покажчиків
mas=new int*[N];//Запит пам’яті для масиву покажчиків
if(mas==NULL) // перевiрка виділення пам’яті
{puts("Масив не створено!"); return -1;}
randomize();
for(i=0;i<N;i++)
{mas[i]=new int[N]; //Запит пам’яті для елементів рядків
if(mas[i]==NULL){puts("Масив не створено!");
delete [] mas; return -2;}
}
puts("\nЗаповнюємо матрицю mas випадковими числами:”);
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
{mas[i][j]=random(100)-50;
printf("%8d",mas[i][j]);
}
printf("\n");
}
puts("\n\tНові значення матриці mas:");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
{mas[i][j]=matr[i][j]+mas[i][j];
printf("%8d",mas[i][j]);
}
printf("\n");
}
//Звільнення пам’яті
for(i=0;i<N;i++)
{delete matr[i]; // звільнення пам'яті з-під масивів елементів
delete mas[i]; // звільнення пам'яті з-під масивів елементів
}
delete [] matr; // звільнення пам'яті з-під масиву покажчиків
delete [] mas; // звільнення пам'яті з-під масиву покажчиків
puts("Press any key...");
getch();
return 0;
}
Вказівка до програми 1.3: Доповніть програму, створивши третю динамічну матрицю. Порівняйте значення елементів перших двох матриць, найбільше значення занесіть в третю матрицю. Результат виведіть на екран.