Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА, кафедра “Захист інформації”
ЗВІТ
З ЛАБОРАТОРНОЇ РОБОТИ № 3
З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ”
НА ТЕМУ: “ РОБОТА З МАСИВАМИ. ВИКОРИСТАННЯ ФУНКЦІЙ “
Варіант 12
ЗАВДАННЯ
Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл.: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Алгоритм впорядкування матриці
Алгоритм для розрахунку fi(aij) та F(fi(aij))
Матриця
Впорядкувати елементи стовпців матриці за спаданням їх значень методом обміну
fi(aij)-середнє геометричне значення елементів в кожному рядку над головною діагоналлю матриці; F(fi(aij))-сума fi(aij)
0 2 -2 89 21
-1 -4 36 41 71
56 93 51 -2 -51
1 3 -8 0 9
23 41 5 8 -2
Блок-схема алгоритму головної програми:
Блок-схема процедури сортування
-
+
Блок-схема алгоритму функції
++
Таблиця ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення:
a[n][n]
Змінна для двовимірного масиву
i,j
Змінні для визначення позицій елементів матриці
suma[n-1]
Змінна для одновимірного масиву, що містить в собі суму кожного елемента рядка над головною діагоналлю
t,x
Тимчасові змінні для сортування матриці
suma
Тимчасова змінна для обчислення суми елементів рядка
gm
Тимчасова змінна для обчислення середнього геометричного сум
main()
Головна функція
sorting()
Функція сортування матриці
sum()
Функція для обчислення суми елементів рядка над головною діагоналлю
gmean()
Функція для обчислення середнього геометричного сум
printf()
Функція виведення даних
scanf()
Функція введення даних
pow(x,y)
Функція для обчислення числа x в степені y
Текст програми мовою C
#include<stdio.h>
#include<stdlib.h>
#define n 5
void bul(int a[n][n]);
void geom (int a[n][n]);
void main(void)
{
int i,j,k;
int a[n][n];
system("cls");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("a[%d][%d] =", i+1, j+1);
scanf("%d", &a[i][j]);
}
}
printf("old array\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
printf ("%5d", a[i][j]);
printf("\n");
}
bul(a);
printf("\nnew array\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf ("%5d", a[i][j]);
}
printf("\n");
}
geomkal (a);
}
void bul(int a[n][n])
{
int i, k, j, c;
for(j = 0; j < n; j++)
{
for(k = n-1; k>=0; k--)
{
for(i = 0; i< k; i++){
if(a[i][j] < a[i+1][j]){
c = a[i][j];
a[i][j] = a[i+1][j];
a[i+1][j] =c;
}
}
}
}
}
void geom (int a[n][n])
{ int i,j,g;
double k;
for (i=0; i<n-1; i++){
g=1;
{ for (j=i+1; j<n; j++)
g=g*a[i][j];
k=pow(abs(g),1/(n-1-i));
printf("g[%d]=%d\n" ,i,k);
} }
For (i=0; i<n-1; i++)
gg=g*g[i];
printf(‘’gg=%d’’ ,gg);
}
Результати роботи програми:
a[1][1]=0
a[1][2]=2
a[1][3]=-2
a[1][4]=89
a[1][5]=21
a[2][1]=-1
a[2][2]=-4
a[2][3]=36
a[2][4]=41
a[2][5]=71
a[3][1]=56
a[3][2]=93
a[3][3]=51
a[3][4]=-2
a[3][5]=-51
a[4][1]=1
a[4][2]=3
a[4][3]=-8
a[4][4]=0
a[4][5]=9
a[5][1]=23
a[5][2]=41
a[5][3]=5
a[5][4]=8
a[5][5]=-2
old array
0 2 -2 89 21
-1 -4 36 41 71
56 93 51 -2 -51
1 3 -8 0 9
23 41 5 8 -2
new array
56 93 51 89 71
23 41 36 41 21
1 3 5 8 9
-1 2 -2 0 -2
0 -4 -8 -2 -51
g[0]=73.9
g[1]=52.3
g [2]=8.5
g[3]=1.4
gg=12.4
Висновок: На цій лабораторній роботі я вивчив синтаксис опису і використання у програмах змінних типу масивів, навчився використовувати масиви для оброблення матриць, вивчив основні алгоритми сортування масивів; навчився описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!