МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
Кафедра “Автоматика та телемеханiка”
АЛГОРИТМІЧНА МОВА ПРОГРАМУВАННЯ Сі
РОБОТА З МАСИВАМИ. ВИКОРИСТАННЯ ФУНКЦІЙ
ЛАБОРАТОРНА РОБОТА № 3
Варіант 15
Мета роботи – вивчити синтаксис опису і використання у програмах змінних типу масивів, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.
ЗАВДАННЯ
Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
№ п/п
Алгоритм впорядкування матриці
Алгоритм для розрахунку fi(aij) та F(fi(aij))
Матриця
15
Впорядкувати елементи стовпців матриці за зростанням їх значень методом обміну
fi(aij)-добуток елементів у кожному рядку над головною діагоналлю; F(fi(aij))-середнє арифметичне значення fi(aij)
50 98 -4 85 -8
40 73 -2 -9 -19
1 6 73 21 0
0 25 2 -5 -3
99 19 95 92 -7
Список ідентифікаторів, констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі
printf-здійснюється вивід інформації на дисплей;
scanf-відбувається зчитування значень із клавіатури і присвоєння їх змінним вихідної програми.
n- константа, яка визначає кількість рядків і стовпців у масиві
i, j- змінні типу int ,які використовуються в операторі FOR для опрацюваня масиву
ser- середнє арифметичне значення добутків елементів у кожному рядку над головною діагоналлю(типу double);
s- сума добутків елементів у кожному рядку над головною діагоналлю(типу double);
sort(x)- функція, яка сортує елементи стовпців двовимірного масиву х типу int за зростанням їх значень методом обміну
dob(х,у)- функція, яка створює одновимірний масив х типу int із добутків елементів у кожному рядку над головною діагоналлю двовимірного масиву х типу int
Кінцева програма:
#include<math.h>
#include<stdio.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"); }
for(i=0;i<n-1;i++) d[i]=1;
dob(d,a); s=0;
for(i=0;i<n-1;i++)
s=s+d[i]; ser=s/(n-1);
printf("\n Sered arefm=%lf",ser);
}
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++)
{ for(j=i+1;j<n;j++)
d[i]=d[i]*a[i][j];
printf("d[%d]=%d\n",i,d[i]);} }
Результати роботи програми:
a[1][1]=50 …ввід матриці…a[5][5]=-7
Old array:
50 98 -4 85 -8
40 73 -2 -9 -19
1 67 3 21 0
0 25 2 -5 -3
99 19 95 92 -7
New array:
0 6 -4 -9 -19
11 9 -2 -5 -8
40 25 2 21 -7
50 73 73 85 -3
99 98 95 92 0
d[0]=-4104
d[1]=-80
d[2]=-147
d[3]=-3
Sered arefm= -1083.5000