МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ“ЛЬВІВСЬКА ПОЛІТЕХНІКА”
КАФЕДРА АВТОМАТИКИ ТА ТЕЛЕМЕХАНІКИ
про виконання лабораторної роботи №3
З курсу: “Алгоритмічні мови та програмування”
на тему:
Варіант-3
Львів-2006р.
Мета роботи –вивчити синтаксис опису і використання у програмах змінних типу масивів, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.
ЗАВДАННЯ:
Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
3
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вибору
fi(aij)-сума елементів у кожному рядку матриці; F(fi(aij))-середнє геометричне значення fi(aij)
2 0 33 -1 -21
78 7 -4 -3 11
-2 -7 -1 -9 0
13 61 60 42 -10
1 0 4 0 16
Список ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення:
a[n][n] – двовимірний масив 5Х5;
i,j,k,c,t – зміннi, значення яких циклічно змінюється;
х – змінна, якій присвоюється в циклі сортування одне із значень для порівняння;
sum - змінна, якій присвоюється сума у кожному рядку;
dob – змінна, якій присвоюється добуток сум;
Sergeom – змінна, якій присвоюється сер. геометричне добутків;
__________________________________________________________________
main( ) – головна функція програми;
scanf ( ) – функція вводу даних;
printf ( ) – функція виводу даних;
sor(int a[n][n]) – функція, що сортує масив;
func(int a[n][n]) – функція, що знаходить середнє значення стовпців над допоміжною діагоналлю та їх добуток.
Блок-схема алгоритму головної програми:
Блок-схема алгоритму функції sor(int a[n][n]):
Блок-схема алгоритму функції func(int a[n][n]):
Остаточна версія програми:
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define n 5
void func(int a[n][n]);
void sor(int a[n][n]);
void main(void)
{
int i,j;
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");
}
sor(a);
printf("New array: \n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf(" %5d",a[i][j]);
printf("\n");
}
func(a);
getch;
}
void sor(int a[n][n])
{
int x,i,k,j,c;
for(k=0;k<n;k++)
{
for(i=0;i<(n-1);i++)
{
c=i;
x=a[i][k];
for(j=i+1;j<n;j++)
{
if (a[j][k]<x)
{
c=j;
x=a[j][k];
}
}
a[c][k]=a[i][k];
a[i][k]=x;
}
}
}
void func(int a[n][n])
{
int c,k;
double sum,dob,t,Sergeom;
dob=1;t=0;
for(c=0;c<n;c++)
{
sum=0;
for(k=0;k<n;k++)
{
sum+=a[c][k];
}
dob*=sum;t++;
printf("\n Suma elementiv u %d rjadku=%lf",c+1,sum);
}
Sergeom=pow(dob,1/t);
printf("\n Serednje geometrychne sum=%lf",Sergeom);
}
Результати роботи програми:
a[1][1]=2
a[1][2]=0
a[1][3]=33
a[1][4]=-1
a[1][5]=-21
a[2][1]=78
a[2][2]=7
a[2][3]=-4
a[2][4]=-3
a[2][5]=11
a[3][1]=-2
a[3][2]=-7
a[3][3]=-1
a[3][4]=-9
a[3][5]=0
a[4][1]=13
a[4][2]=61
a[4][3]=60
a[4][4]=42
a[4][5]=-10
a[5][1]=1
a[5][2]=0
a[5][3]=4
a[5][4]=0
a[5][5]=16
Suma elementiv u 1 rjadku=-43
Suma elementiv u 2 rjadku=-13
Suma elementiv u 3 rjadku=5
Suma elementiv u 4 rjadku=64
Suma elementiv u 5 rjadku=257
Serednje geometrychne sum=34.079953
Висновок: ми вивчили синтаксис опису і використання у програмах змінних типу масивів, навчилися використовувати масиви для оброблення матриць, вивчили основні алгоритми сортування масивів; навчилися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.