Міністерство освіти і науки України
Національний Університет “Львівська політехніка”
ІКТА
Кафедра ЗІ
Звіт
до лабораторної роботи № 3
з курсу “Алгоритмічні мови і програмування”
на тему “ Алгоритмічна мова програмування Сі. Робота з масивами. Використання функцій ”
Варіант № 20
Завдання
Скласти блок-схему алгоритму та програму мовою Сі згідно з завданням: задану прямокутну матрицю А={аij} відсортувати за вказаним алгоритмом (впорядкувати елементи стовпців матриці за зростанням їх значень методом обміну); для відсортованої матриці знайти значення функції F(fi(aij)) – середнє арифметичне значення fi(aij), де fi(aij) – добуток елементів у кожному рядку над головною діагоналлю; алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Список ідентифікаторів, констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі
scanf( ) – функція введення даних, відбувається зчитування значень із клавіатури і присвоєння їх змінним вихідної програми ;
printf( ) –функція виводу даних;
main( ) – головна функція програми.
4) n – константа, яка визначає кількість рядків і стовпців у масиві;
5) i, j – змінні типу int, які використовуються в операторі FOR для опрацювання масиву;
6) ser – середнє арифметичне значення добутків елементів у кожному рядку над головною діагоналлю (типу double);
7) s – сума добутків елементів у кожному рядку над головною діагоналлю (типу double);
8) sort(x) – функція, яка сортує елементи стовпців двовимірного масиву ти
пу int за зростанням їх значень методом обміну;
9) dob(x, y) – функція, яка створює одновимірний масив типу int із добутків елементів у кожному рядку над головною діагоналлю двовимірного масиву;
10) a[n][n] – двовимірний масив 5х5;
11) k, c – змінні, значення яких циклічно змінюється.
Блок-схема алгоритму головної програми:
Блок-схема процедури сортування
-
+
Блок-схема алгоритму функції
++
Програма
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define n 5
void sort(int a[n][n]);
void dob(int d[n-1],int a[n][n]);
void main()
{ int i,j,k;
double ser,s;
int a[n][n],d[n-1];
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");}
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");
}
void sort(int a[n][n])
{int i,j,k,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 dob(int d[n-1],int a[n][n])
{int i,j;for(i=0;i<n-1;i++) d[i]=1;
{ for(j=i+1;j<n;j++)
d[i]=d[i]*a[i][j];
printf("d[%d]=%d\n",d[i]);
}}
for(i=0;i<n-1;i++)
dob(d,a); s=0;
for(i=0;i<n-1;i++)
s=s+d[i]; ser=s/(n-1);
printf("\n Seredne aryfmetychne=%lf",ser);
}
Результати роботи програми:
a[1][1]=19 …ввід матриці…a[5][5]=11
Old array:
19 62 -45 -1 84
23 54 -4 -2 68
36 39 96 94 97
-3 -8 -4 -6 -22
98 -5 -3 0 11
New array:
-3 -8 -45 -6 -22
19 -5 -4 -2 11
23 39 -4 -1 68
36 54 -3 0 84
98 62 96 94 97
d[0]=47520
d[1]=88
d[2]=-68
d[3]=84
Seredne aryfmetychne= 11906
Висновок
В даній лабораторній роботі я навчилася працювати з масивами, процедурами, функціями, вивчила основні алгоритми сортування масивів.