- •Методичні вказівки до виконання лабораторних робіт з дисципліни "Програмування"
- •Порядок виконання лабораторних робіт
- •Загальні відомості
- •Void main()
- •Int func1(int arr[]){..}
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Лабораторні роботи Лабораторна робота №1 Робота з масивами
- •Int main()
- •Int main()
- •Контрольні питання до лабораторної роботи № 1
- •Лабораторна робота № 2 Структури. Об'єднання. Бітові поля структур і об'єднань
- •Int main()
- •Void main()
- •Void main()
- •Int main()
- •Int flag;
- •Контрольні питання до лабораторної роботи № 2
- •Лабораторна робота № 3 Елементарне введення у функції
- •Int main()
- •Int main()
- •Int main()
- •Int arr, barr, arr1, barr1;;
- •Int main()
- •Int main(int argc, char **argv, char **envp)
- •Контрольні питання до лабораторної роботи № 3
- •Int *fp(int,float); int fp(int *,float);
- •Лабораторна робота № 4 Прийоми використання функцій
- •Int main()
- •Void main()
- •Void main()
- •Void main()
- •Контрольні питання до лабораторної роботи № 4
- •Int func1(int, float);
- •Лабораторна робота №5 Робота з файлами
- •Int main()
- •Int main()
- •Int main()
- •Int year;
- •Int main()
- •Контрольні питання до лабораторної роботи № 5
- •Лабораторна робота № 6 Багатофайлова компіляція
- •Int main()
- •Контрольні питання до лабораторної роботи № 6
- •Література
Лабораторні роботи Лабораторна робота №1 Робота з масивами
Мета роботи – вдосконалення навичок роботи з масивами і покажчиками.
Програма 1.1 В програмі створюється динамічний двовимірний масив (матриця), його елементам привласнюються випадкові числа менше десяти і обчислюються суми рядків, які заносяться в одновимірний динамічний масив.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
Int main()
{clrscr();
int N,M, i,j;
float **ptrF; // покажчик на масив покажчиків
puts("Введіть розміри двовимірної матриці");
scanf("%d %d",&N,&M);
// запит пам'яті для масиву покажчиків
ptrF=(float**)malloc(N*sizeof(float*));
if(ptrF==NULL){puts("Помилка"); return -1;}
// запит пам'яті для масивів елементів
for(i=0;i<N;i++)
{ptrF[i]=(float*)malloc(M*sizeof(float));
if (ptrF[i]==NULL){puts("Помилка"); return -1;}
}
randomize();
puts("\nзаповнюємо масив ptrF випадковими числами:");
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
{ptrF[i][j]=random(1000)*0.01;// від 0.00 до 9.99
printf("%8.2f",ptrF[i][j]);}
printf("\n"); }
float *sum; //покажчик на масив елементів
// запит пам'яті для масиву елементів
sum=(float*)malloc(N*sizeof(float));
if(sum==NULL){puts("Помилка"); return -1;}
for(i=0;i<N;i++)
for(j=0,sum[i]=0.0;j<M;j++)
sum[i]+=ptrF[i][j];
for(i=0;i<N;i++)
printf("сума %d-й рядка дорiвнює: %.2f\n",i,sum[i]);
for(i=0;i<N;i++)
free(ptrF[i]); // звільнення пам'яті з-під масивів елементів
free(ptrF); // звільнення пам'яті з-під масиву покажчиків
free(sum); // звільнення пам'яті з-під масиву елементів
puts("\nPress any key...");
getch();
return 0;
}
Завдання до програми 1.1 Доповніть програму, створивши другий одновимірний динамічний масив, в який занесіть згідно варіанту обчисленні дані. Результат виведіть на екран.
Обчисліть суми дробових частин елементів рядків.
Обчисліть кількість елементів в рядках, що більші 5.0.
Обчисліть суми елементів стовбців.
Обчисліть кількість елементів в стовбцях, що менші 2.5.
Обчисліть суми цілих частин елементів стовбців.
Програма 1.2 В програмі створюються двовимірні динамічні квадратні матриці. Розмір матриць вводиться з клавіатури. Значення елементів першої матриці вводяться з клавіатури, а другої – заповнюються випадковими числами від -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){puts("Масив не створено!"); return -1;}
for(i=0;i<N;i++)
{matr[i]=new int[N]; // запит пам’яті для елементів рядків
if(matr[i]==NULL){puts("Масив не створено!");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){puts("Масив не створено!"); return -1;}
randomize();
for(i=0;i<N;i++)
{mas[i]=new int[N]; //Запит пам’яті для елементів рядків
if(mas[i]==NULL) {puts("Масив не створено!");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("\nPress any key...");
getch();
return 0;
}
Завдання до програми 1.2 Доповніть програму, створивши третю динамічну матрицю. Виконайте задані відповідно варіанту дії. Результат занесіть в третю матрицю та виведіть на екран.
Порівняйте значення елементів перших двох матриць, найбільше значення занесіть в третю матрицю.
Першу матрицю заповніть випадковими числами до 100. В третю матрицю занесіть суму елементів перших двох матриць, якщо вона знаходиться в діапазоні від 60 до 120, інакше занесіть число 46. Результат виведіть на екран у символьному вигляді.
Перемножте першу та другу матрицю, результат занесіть в третю матрицю. Для довідки: .
Порівняйте значення елементів перших двох матриць. Якщо відповідні елементи від’ємні, то в третю матрицю занесіть –1, якщо додатні – +1, інакше 0.
Першу матрицю заповніть випадковими числами від -100 до +100. В третю матрицю занесіть суму абсолютних значень елементів перших двох матриць.