МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
Кафедра захисту інформації
З В І Т
До лабораторної роботи №3
з курсу:
„Алгоритмічні мови та програмування”
на тему:
„Робота з масивами. Використання функцій”
Варіант 6
Мета:
Вивчити синтаксис опису і використання у програмах змінних типу масивів, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів, навчитися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.
Завдання:
Скласти блок-схему алгоритму та програму мовою Сі згідно з завданням. Задано прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функцій; елементи матриці вводити з клавіатуриж програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Алгоритм впорядкування матриці
Алгоритм для розрахунку fi(aij) та F(fi(aij));
Матриця
Впорядкувати елементи рядків матриці за спаданням їх значень методом вибору
fi(aij) – середнє геометричне значення елементів у кожному стовпці матриці;
F(fi(aij)) – сума fi(aij)
-3
-5
-45
-71
-5
0
1
3
2
7
11
9
45
0
4
9
19
55
44
90
-3
-4
-1
-5
0
Забезпечити ввід аргументів з клавіатури та вивід результату на дисплей.
Список індентифікаторів, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення
i,j,l – змінні цілого типу, які є аргументами виразу;
F- змінна дійсного типу
a[n][n] – прямокутний масив nxn;
s[n]- лінійний масив з n елементів типу double;
main() – головна функція; printf() – функція виводу даних;
scanf() – функція вводу даних;
pow(x,y) – математична функція обчислення
sort(a) – функція призначена для сортування масиву методом вибору
scan – функція для зчитування масиву [n][n]
print – функція для виведення на екран масиву [m][n]
fF(a,s,F) – функція для обчислення fi(aij) та F(fi(aij));
Блок-схема алгоритму:
Блок-схема підпрограми для зчитування масиву nxn:
Блок-схема підпрограми для виведення масиву nxn на екран:
Блок-схема підпрограми для обчислення fij та F(fij):
Блок-схема підпрограми для сортування масиву:
Текст програми:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 5
void scan(int a[n][n]);
void print(int a[n][n]);
void fF(int a[n][n],double s[n],double F);
void sort(int a[n][n]);
void main(void)
{
int i,j, a[n][n];
double s[n],F;
system("cls");
scan(a);
printf("Print\n");print(a);
sort(a); printf("Print_new\n");print(a);
fF(a,s,F);
}
void scan(int a[n][n])
{
int i,j;
printf("Scan\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
}
void print(int a[n][n])
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
}
void sort(int a[n][n])
{
int i,j,l,r,k;
for(l=0;l<n;l++)
{
for(i=0;i<n-1;i++)
{
r=a[l][i];k=i;
for(j=i+1;j<n;j++)
{
if(a[l][j]>r)
{
k=j;
r=a[l][j];
a[l][k]=a[l][i];
a[l][i]=r;
}
}
}
}
}
void fF(int a[n][n],double s[n],double F)
{
int i,j,l;
for(l=0;l<n;l++) s[l]=1;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++) s[j]*=a[i][j];
}
for(l=0;l<n;l++) s[l]=pow(s[l],0.2);
F=0;
printf("f[i,j]\n"); for(i=0;i<n;i++) printf("%lf\t",s[i]);
for(i=0;i<n;i++) F+=s[i];
printf("F(f[i,j])\n %lf",F);printf("\n");
}
Результат виконання програми:
Scan
-3 -5 -45 -71 -5
0 1 3 2 7
11 9 45 0 4
9 19 55 44 90
-3 -4 -1 -5 0
Print
-3 -5 -45 -71 -5
0 1 3 2 7
11 9 45 0 4
9 19 55 44 90
-3 -4 -1 -5 0
Print_new
-3 -5 -5 -45 -71
7 3 2 1 0
45 11 9 4 0
90 55 44 19 9
0 -1 -3 -4 -5
f[i,j]
0.000000 6.188271 6.530753 6.717648 0.000000
F(f[i,j])
19.436672
Висновок:
На цій лабораторній роботі я вивчив синтаксис опису і використання у програмах змінних типу масивів, навчився використовувати масиви для оброблення матриць, вивчив основні алгоритми сортування масивів, навчився описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.