МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ“ЛЬВІВСЬКА ПОЛІТЕХНІКА”
КАФЕДРА АВТОМАТИКИ ТА ТЕЛЕМЕХАНІКИ
про виконання лабораторної роботи №3
З курсу: “Алгоритмічні мови та програмування”
на тему:
Варіант-13
Львів-2006р.
Мета роботи –вивчити синтаксис опису і використання у програмах змінних типу масивів, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.
ЗАВДАННЯ:
Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
13
Впорядкувати елементи рядків матриці за спаданням їх значень методом вставки
fi(aij)-середнє арифметичне значення елементів у кожному стовпці над допоміжною діагоналлю матриці; F(fi(aij))-добуток fi(aij)
12 46 –23 72 -5
59 7 -8 0 67
7 -8 -4 -97 -55
77 -1 -5 34 -8
0 22 27 24 24
Список ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення:
a[n][n] – двовимірний масив 5Х5;
i,j,k,c,t – зміннi, значення яких циклічно змінюється;
х – змінна, якій присвоюється в циклі сортування одне із значень для порівняння;
sum - змінна, якій присвоюється сер. арифметичне стовпця;
dob – змінна, якій присвоюється добуток сер. арифметичних;
__________________________________________________________________
main( ) – головна функція програми;
scanf ( ) – функція вводу даних;
printf ( ) – функція виводу даних;
sor(int a[n][n]) – функція, що сортує масив;
func(int a[n][n]) – функція, що знаходить середнє значення стовпців над допоміжною діагоналлю та їх добуток.
Блок-схема алгоритму головної програми:
Блок-схема алгоритму функції sor:
Блок-схема алгоритму функції func:
Остаточна версія програми:
#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,k,c,t;
for(c=0;c<n;c++)
{
for(k=0;k<n;k++)
{
x=a[c][k];
t=k-1;
while((a[c][t]<x) && (t>=0))
{
a[c][t+1]=a[c][t];
t--;
}
a[c][t+1]=x;
}
}
}
void func(int a[n][n])
{
int c,k,t;
double sum,dob;
dob=1;
for(c=0;c<n;c++)
{
sum=0;t=0;
for(k=0;k<n;k++)
{
if (k+c<=n-1)
{
sum+=a[k][c];
t++;
}
}
if(t!=0) sum=sum/t;
if(sum!=0) dob*=sum;
printf("\n Serednje aryfmetychne u %d stovpci=%lf, t=%d",c+1,sum,t);
}
printf("\n Dobutok ser. aryfmetychnyx=%lf",dob);
}
Результати роботи програми:
a[1][1]=12
a[1][2]=46
a[1][3]=-23
a[1][4]=72
a[1][5]=-5
a[2][1]=59
a[2][2]=7
a[2][3]=-8
a[2][4]=0
a[2][5]=67
a[3][1]=7
a[3][2]=-8
a[3][3]=-4
a[3][4]=-97
a[3][5]=-55
a[4][1]=77
a[4][2]=-1
a[4][3]=-5
a[4][4]=34
a[4][5]=-8
a[5][1]=0
a[5][2]=22
a[5][3]=27
a[5][4]=24
a[5][5]=24
Serednje aryfmetychne u 1 stovpci=50.000, t=5
Serednje aryfmetychne u 1 stovpci=33.750, t=4
Serednje aryfmetychne u 1 stovpci=3.6667, t=3
Serednje aryfmetychne u 1 stovpci=-2.500, t=2
Serednje aryfmetychne u 1 stovpci=-23.00, t=1
Dobutok ser. aryfmetychych=355781.2500
Висновок: ми вивчили синтаксис опису і використання у програмах змінних типу масивів, навчилися використовувати масиви для оброблення матриць, вивчили основні алгоритми сортування масивів; навчилися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.