You are on page 1of 5

КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ ІМЕНІ ІГОРЯ

СІКОРСЬКОГО
ТЕПЛОЕНЕРГЕТИЧНИЙ ФАКУЛЬТЕТ
КАФЕДРА АПЕПС

Програмування складних алгоритмів

ЗВІТ

до лабораторної роботи №1

«Складність алгоритму»

Варіант № 5

Дата «20» квітня 2021 Виконав: студент 1 курсу


гр. ТР-з01
Савченко М. А.

Оцінка «_________» Перевірив:


Дата «___» _______ 2021 Онисько А. І.

КИЇВ 2021
Завдання 1. Сформувати двовимірний масив цілих чисел, використовуючи
датчик випадкових чисел. Використати динамічне оголошення масиву на n
елементів (кількість елементів задавати з екрану).

Завдання 2. Провести оцінку часової складності алгоритму, використовуючи


О-символіку в найгіршому або/і в середньому.
Часова складність алгоритму при найгіршому: n2, при середньому: n.

Завдання 3. Порівняти час роботи та кількість ітерацій/кількість кроків


роботи програми з різною розмірністю масиву

Розмірність 10х10 50х50 100х1 500х500


масиву 00
Час роботи 0,002c 0,003c 0,005c 0,058c
Кількість ітерацій 430 10150 40300 1001500

Індивідуальне завдання 4. У кожному стовпчику підрахувати суму


елементів між першим та останнім від’ємним елементом.

Індивідуальне завдання 5. Провести обмін елементів матриці за вказаною


схемою:

2
Тобто відзеркалити матрицю по вертикалі.

Програма розроблена на мові програмування С. Роботу програми та весь код


можна перевірити за посиланням: https://replit.com/@Variandr/AlgLab1#main.c

Програмний код(додаток)

#include <stdio.h>
#include <malloc.h>
#include <time.h>
#include <stdlib.h>

int Array(int n);


int size = 0;

int main(){
int n = 50;
printf("\n\nВведіть розмірність масиву:");
scanf("%d", &n);
3
Array(n);
return 0;
};

int Array(int n){


srand(time(NULL));
int **a;
int el1, el2;
//Створення масиву
a = (int**)malloc(n*sizeof(int*));
for (int i = 0; i < n; i++){
a[i] = (int*)malloc(n*sizeof(int));
for(int j = 0; j < n; j++){
a[i][j]=rand() % 21-10;
size++;
}
size++;
}
//Виведення масиву на екран
printf("\nМасив:\n");
for (int i = 0; i < n; i++){
for ( int j = 0; j < n; j++){
printf("%4d", a[i][j]);
size++;
}
printf("\n");
size++;
}
printf("\nВиведення суми першого і останнього від'ємного елемента
стовпця:\n");
//Розрахунок суми
for (int j = 0; j < n; j++){
for ( int i = 0; i < n; i++){
if(a[i][j] < 0) el1 = i;
size++;
}
for ( int i = n-1; i >= 0; i--){
if(a[i][j] < 0) el2 = i;
size++;
}
if(el1!=el2) printf("%4d",a[el1][j]+a[el2][j]);
else printf("%4d",a[el1][j]);
size++;
}
printf("\n\nКількість ітерацій: %d", size);
//Зеркальне відображення по вертикалі
printf("\n\nЗеркальне відображення масиву:\n");
for (int i = 0; i < n; i++){
for (int j = n - 1; j > -1; j--){
printf("%4d", a[i][j]);

4
}
printf("\n");
}
free(a);
return 0;
}

You might also like