Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра БІТ
/
З В І Т
до лабораторної роботи №3
з курсу: «Технології програмування» на тему: «Робота з масивами. Використання функцій»
Варіант № 25
.
Львів – 2018
Мета роботи:
Вивчити синтаксис опису і використання у програмах змінних типу масивів, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.
Завдання
Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Варіант 25
25
Впорядкувати елементи стовпців матриці за спаданням їх значень методом вставки
fi(aij)-середнє геометричне значення елементів у кожному рядку під головною діагоналлю матриці; F(fi(aij))-сума fi(aij)
9 24 -2 86 -3
40 49 -4 -3 0
27 -76 77 -1 69
71 -89 -94 -51 50
2 96 42 36 -1
2. Блок-схема алгоритму програми
Блок-схема до функції main():
Блок-схема до функції InsertSort(a):
Блок-схема до функції Calculation(a):
Cписок ідентифікаторів, змінних, функцій, використаних у блок-схемі алгоритму і програмі,
та їх пояснення
a[i][j] – елементи масиву;
fi(aij)-середнє геометричне значення елементів у кожному рядку над головною діагоналлю;
F(fi(aij))-сума fi(aij);
for - цикл з передумовою;
if – умовний оператор;
main() – головна функція;
InsertSort (a) – функція сортування;
Calculation (a) – функція обчислення середнього геометричного над головною діагоналлю та їх сума;
printf() – функція виводу даних;
scanf_s() – функція вводу даних;
Текст програми
#include <stdio.h>
#include <math.h>
#define n 5
void InsertionSort(int a[n][n]);
void Calculation(int a[n][n]);
main() //Ввід та вивід матриць
{
int a[n][n];
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("Vvedit' element [%d][%d] massivu: ", i + 1, j + 1);
scanf_s("%d", &a[i][j]);
}
}
printf("\n Old Matrix \n \n");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
InsertionSort(a);
printf("\n New Matrix \n \n");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
Calculation(a);
}
void Calculation(int a[n][n]) //Функція, яка обчислює сер. геом. та його суму
{
int i, j;
double f, F;
F = 0.0;
for (i = 0; i < n; i++)
{
f = 1.0;
for (j = 0; j < n; j++)
{
if (j > i)
{
f *= (fabs(a[i][j]));
}
}
f = pow(f, 1.0 / (n - i));
F += f;
printf("\n Serednie geometrychne elementiv %d riadka=%lf\n", i + 1, f);
}
printf("\n Suma serednih geometrychnyh elementiv riadkiv=%lf\n", F);
}
void InsertionSort(int a[n][n]) //Сортування вставками
{
int i, j, e, x;
for (j = 0; j < n; j++)
{
for (i = 1; i < n; i++)
{
x = a[i][j];
e = i - 1;
while (a[e][j] < x && e>= 0)
{
a[e + 1][j] = a[e][j];
e--;
}
a[e + 1][j] = x;
}
}
}
Результат виконання програми
/
Висновок
На даній лабораторній роботі я вивчив синтаксис опису і використання у програмах змінних типу масивів, навчився використовувати масиви для оброблення матриць, вивчив основні алгоритми сортування масивів; навчився описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.