Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Інститут комп’ютерних технологій,
автоматики та метрології
кафедра “Захист інформації”
Звіт
до лабораторної роботи № 3
з курсу алгоритмічні мови та програмування
на тему :
“Робота з масивами. Використання функцій.”
Варіант № 16
Львів 2007
Завдання
Скласти програму на мові С та блок-схему для прямокутної матриці, впорядкувати елементи рядків матриці за спаданням їх значень методом вставки. Для відсортованої матриці обчислити суму елементів у кожному стовпці під головною діагоналлю матриці і їхнє середню геометричне значення. Алгоритм сортування і обчислення оформити у вигляді функції, елементи матриці вводити з клавіатури. Програма повинна вивести на екран відсортовану матрицю, значення сум елементів стовпців, що знаходяться під головною діагоналлю і їхнє середнє геометричне значення.
Матриця :
Блок-схема алгоритму
Список ідентифікаторів констант, змінних та функцій, використаних в програмі та блок-схемі алгоритму та їх пояснення
a[n][n] – двовимірний масив розміру n x n, що утворює матрицю
n – константа, яка задає розміри матриці
i і j - змінні, які є рядками і стовпцями матриці відповідно
sum - змінна, якій прсвоюється сума елементів у кожному стовпці під головною діагоналлю матриці
geom – змінна, якій прсвоюється середнє геометричне значення суми елементів у кожному стовпці, що знаходяться під головною діагоналлю матриці
k і x - допоміжні змінні
main () – головна функція
sort – функція сортування елементів рядків матриці за спаданням їх значень методом вставки
suma – функція, що знаходить суму елементів у кожному стовпці під головною діагоналлю матриці і їхнє середнє геометричне значення
printf () – функція виводу повідомлень на монітор
scanf() – функція введення значень змінних з клавіатури
system("cls") – функція очистки екрану
Текст програми
#include <stdio.h>
#include <stdlib.h>
#define n 5
void sort(int a[n][n]);
void suma(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]);
}
}
system("cls");
printf("Old array :\n");
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%5d", a[i][j]);
printf("\n");
}
sort(a);
printf("New array :\n");
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf("%5d", a[i][j]);
}
printf("\n");
}
printf("\n");
suma(a);
}
void sort(int a[n][n])
{
int i,j,x,k;
for (i=0; i<n; i++)
{
for (j=1; j<n; j++)
{
x=a[i][j];
k=j-1;
while (a[i][k] < x && k>=0)
{
a[i][k+1] = a[i][k];
k--;
}
a[i][k+1] = x;
}
}
}
void suma(int a[n][n])
{
int i,j,k;
double sum, geom;
geom=1;
k=1;
for (j=0; j<(n-1); j++)
{
sum=0;
for (i=k; i<n; i++)
{
sum = sum + a[i][j];
}
printf("Suma elementiv u stovpci %d pid golov. diagon. e = %.0lf; \n", j+1, sum);
geom=geom*sum;
k++;
}
geom=geom/j;
printf(" Seredne geometrichne znach = %.2lf . \n", geom);
}
Результат роботи програми
Old array :
New array :
Suma elementiv u stovpci 1 pid golov. diagon. e = 211;
Suma elementiv u stovpci 2 pid golov. diagon. e = 81;
Suma elementiv u stovpci 3 pid golov. diagon. e = 6;
Suma elementiv u stovpci 4 pid golov. diagon. e = -5;
Seredne geometrichne znach = -128182.50 .