МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
Кафедра БІТ
З В І Т
до лабораторної роботи №3
з курсу: «Технології програмування»
на тему: «Робота з масивами. Використання функцій»
Варіант № 6
Мета роботи – вивчити синтаксис опису і використання у програмах змінних типу масивів, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосувати у програмах функції для виконання логічно закінчених алгоритмів.
Завдання
Скласти блок-схему алгоритму та програму мовою Cі згідно з завданням: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування і обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Блок-схема алгоритму програми/
/
/
/
Список ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення
a[n][n] – матриця розмірності n на n;
i(j) – змінна дійсного типу, яка є індексом рядків(стовпців).
k – змінна цілого типу, якій надається значення змінної j;
x - змінна цілого типу, якій присвоюється попереднє значення елемента масиву;
q - змінна цілого типу, яка використовується як нове значення j для перевірки наступного елементу масиву;
main( ) – головна функція;
scanf( ) – функція вводу даних;
printf( ) – функція виводу даних;
for( ) – оператор циклу з передумовою;
sort ( ) – користувацька функція, яка сортує елементи масиву в рядках за спаданням;
geometric_average – користувацька функція, яка знаходить значення fi як середнє геометричне значення елементів у кожному стовпці матриці і F(fi(aij)) як сума fi(aij);
pow(-1,k) – піднесення (-1) до степеня k;
if…else – умовний оператор.
Текст програми
#include <stdio.h>
#include <math.h>
#define n 5
void sort(int a[n][n]);
void geometric_average(int a[n][n]);
int main()
{
int a[n][n];
int i,j;
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("Array \n");
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
sort(a);
printf("Sort array \n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%5d", a[i][j]);
}
printf("\n");
}
geometric_aversge(a);
return 0;
}
void sort(int a[][n])
{
int i,j,k,x,q;
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++) {
k=j;
x=a[i][j];
for(q=j+1;q<n;q++)
{
if(a[i][q]>x)
{
k=q;
x=a[i][k];
a[i][q]=a[i][j];
a[i][j]=x;
}
}
}
}
}
void geometric_aversge(int a [][n])
{
int i,j;
double f,F;
F=0;
for(j=0;j<n;j++)
{
f=1;
for(i=0;i<n;i++)
{
f*=a[i][j];
}
if (f==-0)
f=0;
else
f=pow(f,1.0/i);
printf("f[%d]=%lf \n", j+1,f);
F+=f;
}
printf("F=%lf",F);
}
Результати роботи програми
/