МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
кафедра „ЗАХИСТ ІНФОРМАЦІЇ”
EMBED Word.Picture.8
ЗВІТ
до лабораторної роботи № 3
З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ”
на тему:
РОБОТА З МАСИВАМИ. ВИКОРИСТАННЯ ФУНКЦІЙ
Варіант № 16
Виконав:
студент групи ІБ – 1
Перевірив:
Львів - 2007
Мета роботи - вивчити синтаксис опису і використання в програмах змінних типу масив, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосовувати у програмах процедури і функції для виконання логічно закінчених алгоритмів.
2. ПОВНИЙ ТЕКС ЗАВДАННЯ
Скласти блок-схемy алгоритмy та програмy мовою Ci для впорядкування елементів стовпців матриці за спаданням їх значень методом обміну:
0 2 -2 89 21
-1 -4 36 41 71
56 93 51 -2 -51
1 3 -8 0 9
23 41 5 8 -2
Для відсортованої матриці знайти значення функції fi(aij) – середнє геометричне значення елементів в кожному рядку над головною діагоналлю матриці та F(fi(aij)) – сума fi(aij). Обчислення fi(aij) та F(fi(aij)) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
3. ОСТАТОЧНА ВЕРСІЯ БЛОК-СХЕМИ АЛГОРИТМУ
EMBED Visio.Drawing.6 Блок-схема функції PrintMas(a)
EMBED Visio.Drawing.6
Блок-схема функції ReadMas(a)
EMBED Visio.Drawing.6
Блок-схема функції sGeom(a,k)
EMBED Visio.Drawing.6
Блок-схема функції sum_sGeom(а)
EMBED Visio.Drawing.6
Блок-схема функції SortMas(а)
EMBED Visio.Drawing.6
4. СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ПРОЦЕДУР І ФУНКЦІЙ, ВИКОРИСТАНИХ У ПРОГРАМІ, ТА ЇХ ПОЯСНЕННЯ
a – масив значень типу int який потрібно впорядкувати;
n – константа типу int яка вказує розмірність масиву а;
tmp – змінна типу int яка використовується для того щоб поміняти два значення елементів масиву а місцями;
i, j, k – змінні типу int для зберігання введених даних та результату роботи програми;
dob, sg, sum – змінні типу double для зберігання певних значень відповідного типу у функціях;
clrscr() – функція очистки екрана яка об’явлена в модулі conio.h;
getch() – функція яка чекає натискання будь-якої клавіші;
printf() – функція виведення текстових повідомлень і значень змінних на екран;
scanf() – функція яка зчитує дані з клавіатури та присвоює відповідне значення змінним;
pow(x,y) – функція для піднесення х в степінь у;
Користувацькі функції
PrintMas(а) – функція яка здійснює вивід матриці а на екран;
ReadMas(а) – функція яка зчитує значення введені з клавіатури і поміщає їх у масив а розміру n∙n;
SortMas(а) – функція яка впорядковує стовпці матриці а за спаданням їх значень методом обміну;
sGeom(а, і) – функція, яка повертає значення типу double яке є середнім геометричним і-того рядка матриці над головною діагоналлю;
sum_sGeom(а) – функція яка повертає значення типу double яке є сумою середніх геометричних значень усіх рядків матриці а над головною діагоналлю;
5. ОСТАТОЧНА ВЕРСІЯ ПРОГРАМИ
#include <stdio.h>
#include <conio.h>
#include <math.h>
const n=5;
//=================================================
void PrintMas(int a[n][n])
{
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++) printf("%4d",a[i][j]);
printf("\n");
}
}
//=================================================
void ReadMas(int a[n][n])
{
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
{ printf("a[%d][%d] = ",i,j); scanf("%d",&a[i][j]);}
}
//=================================================
void SortMas(int a[n][n])
{
int tmp;
for (int k=0;k<n;k++)
for (int i=1;i<n;i++)
for (int j=n-1;j>=i;j--)
if (a[j-1][k]<a[j][k])
{
tmp=a[j-1][k]; a[j-1][k]=a[j][k]; a[j][k]=tmp;
}
}
//=================================================
double sGeom(int a[n][n],int k)
{
double dob=1;
for (int i=n-1;i>k;i--) dob*=a[k][i];
return pow(dob,1.0/(n-k-1));
}
//=================================================
double sum_sGeom(int a[n][n])
{
double sum=0,sg;
for (int i=0;i<n-1;i++)
{
sg=sGeom(a,i);
printf("\nsGeom(%d) = %3.2lf",i,sg);
sum+=sg;
}
return sum;
}
void main()
{
int a[n][n]; clrscr();
printf("Vvedit masuv %dx%d elementiv:\n",n,n);
ReadMas(a); clrscr();
printf("\nVvedeno masuv:\n\n");
PrintMas(a); SortMas(a);
printf("\nVidsortovano masuv:\n\n");
PrintMas(a);
printf("\n\nSum = %3.2lf",sum_sGeom(a));
getch();
}
6. РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ
Vvedeno masuv:
0 2 -2 89 21
-1 -4 36 41 71
56 93 51 -2 -51
1 3 -8 0 9
23 41 5 8 -2
Vidsortovano masuv:
56 93 51 89 71
23 41 36 41 21
1 3 5 8 9
0 2 -2 0 -2
-1 -4 -8 -2 -51
sGeom(0) = 73.99
sGeom(1) = 31.41
sGeom(2) = 8.49
sGeom(3) = -2.00
Sum = 111.89
7. ВИСНОВОК
На даній лабораторній роботі я навчився використовувати змінними типу масив та користуватися функціями. Я вивчив алгоритми для впорядкування елементів масиву. Внаслідок чого було створено програму для введення, впорядкування, пошуку середнього геометричного та виведення масиву на дисплей.