МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет «Львівська політехніка»
РОБОТА З МАСИВАМИ. ВИКОРИСТАННЯ ПРОЦЕДУР ТА ФУНКЦІЙ
ЛАБОРАТОРНА РОБОТА № 3
З КУРСУ «АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ»
для студентів спеціальності 6.0914
«Комп’ютеризовані системи, автоматика і управління»
Львів 2008
ПОВНИЙ ТЕКСТ ЗАВДАННЯ
1. Вивчити правила опису та використання змінних-масивів в програмах, написаних алгоритмічною мовою Турбо-Паскаль.
2. Вивчити правила опису та виклику процедур і функцій в програмах, написаних алгоритмічною мовою Турбо-Паскаль.
3. Вивчити основні алгоритми сортування масивів.
4. Написати програму алгоритмічною мовою Турбо-Паскаль згідно з завданням, отриманим від викладача за табл. 1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування оформити у вигляді процедури; обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Таблиця 1
№ п/п
Алгоритм впорядкування матриці
Алгоритм для розрахунку 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
БЛОК-СХЕМА АЛГОРИТМУ ПРОГРАМИ
ПРОЦЕДУРА ДЛЯ СОРТУВАННЯ МАТРИЦІ А – SORT_ARRAY :
ФУНКЦІЯ ДЛЯ ПЕРЕВІРКИ ПРАВИЛЬНОСТІ УМОВИ – BOOL :
ФУНКЦІЯ ДЛЯ ЗНАХОДЖЕННЯ СУМ РЯДІВ – SUMA :
ФУНКЦІЯ ЗНАХОДЖЕННЯ СЕРЕДНЬОГО ГЕОМЕТРИЧНОГО ДЛЯ СУМ РЯДІВ – DOBUTOK :
Так Ні
СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ПРОЦЕДУР ТА ФУНКЦІЙ, ВИКОРИСТАНИХ У ПРОГРАМІ, ТА ЇХ ПОЯСНЕННЯ
СПИСОК :
N
A
B
I
J
K
P
Z
X
S
V
Sort_Array
Suma
Dobutok
ПОЯСНЕННЯ ІДЕНТИФІКАТОРІВ :
N – розмірність матриці по рядках і стовпцях
A – масив для сортування
B – масив для зберігання значень сум рядків матриці
I – лічильник : вказівник позиції елемента матриці
J – лічильник : вказівник позиції елемента матриці
K – вказівник позиції елемента для матриці A під час її сортування
P – вказівник позиції елемента для матриці B під час запису значень сум рядків
Z – вказівник позиції елемента матриці.
X – змінна для тимчасового збереження значення елемента матриці A під час сортування елементів цієї матриці
S – змінна для збереження значення суми елементів рядка відсортованої матриці
V – змінна логічного типу для зберігання значення функції Bool, описаної у процедурі Sort_Array, перевірка умови
Sort_Array – процедура сортування матриці A
Suma – функція для сумування значень рядків відсортованої матриці і виведення значення суми на екран
Dobutok – функція для знаходження середнього геометричного для сум рядків відсортованої матриці
ОСТАТОЧНО ВІДЛАГОДЖЕНИЙ ТЕКСТ ПРОГРАМИ
Program Lab_3;
uses crt;
const
n=5;
type a_matrix=array[1..n,1..n] of real;
b_matrix=array[1..n] of real;
var
a:a_matrix;
b:b_matrix;
i,j,z,k,p:integer;
x,s:real;
v:boolean;
procedure
Sort_Array;
function Bool:boolean;
begin
v:=a[j,z]<x;
end;
begin
for z:=1 to n do begin
for i:=1 to (n-1) do begin
k:=i;x:=a[i,z];for j:=(i+1) to n do begin bool;
if v=true then begin k:=j;x:=a[j,z];end;end;
a[k,z]:=a[i,z];
a[i,z]:=x;end;end;
end;
Function Suma:real;
begin
s:=0;
z:=1;
p:=0;
repeat for i:=1 to n do begin s:=s+a[z,i];end;
p:=p+1;z:=z+1;writeln('Number ',p,' ',s:4:2);b[p]:=s;s:=0;until z>5;
end;
Function
dobutok:integer;
begin
s:=1;
for i:=1 to n do begin s:=s*b[i];end;
if s>0 then s:=exp(1/i*ln(s))
else s:=-1*exp(1/i*ln(-1*s));
writeln(s:4:2);
end;
begin
clrscr;
writeln('Enter Matrix Elements :');
writeln;
for i:=1 to n do
for j:=1 to n do begin
write('Enter Matrix Element ',i,j,' = ');read(a[i,j]);end;
writeln;
writeln('Matrix not Sorted :');
writeln;
z:=1;
repeat for i:=1 to n do
write(' ',a[z,i]:4:2,' ');writeln;z:=z+1;until z>5;
writeln;
writeln('Matrix Elements Sorted :');
Sort_Array;
writeln;
z:=1;
repeat for i:=1 to n do
write(' ',a[z,i]:4:2,' ');writeln;z:=z+1;until z>5;
writeln;
writeln('Amount :');
writeln;
suma;
writeln;
writeln('Middle Geometrical :');
writeln;
dobutok;
end.
РЕЗУЛЬТАТИ ВИКОНАННЯ ПРОГРАМИ
Enter Matrix Element 11 = 2
Enter Matrix Element 12 = 0
Enter Matrix Element 13 = 33
Enter Matrix Element 14 = -1
Enter Matrix Element 15 = -21
Enter Matrix Element 21 = 78
Enter Matrix Element 22 = 7
Enter Matrix Element 23 = -4
Enter Matrix Element 24 = -3
Enter Matrix Element 25 = 11
Enter Matrix Element 31 = -2
Enter Matrix Element 32 = -7
Enter Matrix Element 33 = -1
Enter Matrix Element 34 = -9
Enter Matrix Element 35 = 0
Enter Matrix Element 41 = 13
Enter Matrix Element 42 = 61
Enter Matrix Element 43 = 60
Enter Matrix Element 44 = 42
Enter Matrix Element 45 = -10
Enter Matrix Element 51 = 1
Enter Matrix Element 52 = 0
Enter Matrix Element 53 = 4
Enter Matrix Element 54 = 0
Enter Matrix Element 55 = 16
Matrix not Sorted :
2.00 0.00 33.00 -1.00 -21.00
78.00 7.00 -4.00 -3.00 11.00
-2.00 -7.00 -1.00 -9.00 0.00
13.00 61.00 60.00 42.00 -10.00
1.00 0.00 4.00 0.00 16.00
Matrix Elements Sorted :
-2.00 -7.00 -4.00 -9.00 -21.00
1.00 0.00 -1.00 -3.00 -10.00
2.00 0.00 4.00 -1.00 0.00
13.00 7.00 33.00 0.00 11.00
78.00 61.00 60.00 42.00 16.00
Amount :
Number 1 -43.00
Number 2 -13.00
Number 3 5.00
Number 4 64.00
Number 5 257.00
Middle Geometrical :
34.08