МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА, кафедра “Захисту інформації”
ЗВІТ
З ЛАБОРАТОРНОЇ РОБОТИ № 3
З КУРСУ “АЛГОРИТМІЧНІ МОВИ І ПРОГРАМУВАННЯ”
РОБОТА З МАСИВАМИ.
ВИКОРИСТАННЯ ПРОЦЕДУР ТА ФУНКЦІЙ
кафедра “Автоматика і
телемеханіки”
Львів – 2006
Мета роботи - вивчити синтаксис опису і використання в програмах змінних типу масив, навчитися використовувати масиви для оброблення матриць, вивчити основні алгоритми сортування масивів; навчитися описувати та застосовувати у програмах процедури і функції для виконання логічно закінчених алгоритмів.
ЗАВДАННЯ
1. Вивчити правила опису та використання змінних-масивів в програмах, написаних алгоритмічною мовою Турбо-Паскаль.
2. Вивчити правила опису та виклику процедур і функцій в програмах, написаних алгоритмічною мовою Турбо-Паскаль.
3. Вивчити основні алгоритми сортування масивів.
4. Написати програму алгоритмічною мовою Турбо-Паскаль згідно з завданням, отриманим від викладача за табл.1: задану прямокутну матрицю A={aij} відсортувати за вказаним алгоритмом; для відсортованої матриці знайти значення функції F(fi(aij)); алгоритм сортування оформити у вигляді процедури; обчислення fi(aij) оформити у вигляді функції; елементи матриці вводити з клавіатури; програма повинна вивести на екран відсортовану матрицю, всі значення fi(aij) та значення функції F(fi(aij)).
Таблиця 1
23
Впорядкувати елементи стовпців матриці за зростанням їх значень методом вставки
fi(aij) - сума елементів у кожному рядку над головною діагоналлю матриці;
F(fi(aij)) - середнє геометричне значення fi(aij)
31 65 -83 -2 -85
9 -2 11 -4 70
52 73 -8 -1 60
57 83 -1 82 50
1 -3 -2 78 -9
Текст програми мовою Pascal
Program lab3;
uses crt;
const f=5;
l=5;
type matrix= array [1..f,1..l] of integer;
matrix2= array [1..f] of integer;
var a:matrix;
summa:matrix2;
g,i,j,m,n,k:integer;
gmeaning:real;
PROCEDURE SORTING;
begin
for m:=1 to l do
begin
i:=2;
repeat
j:=1;
repeat
if a[i,m]<=a[j,m] then
begin
k:=i;
g:=a[i,m];
repeat
a[k,m]:=a[k-1,m];
k:=k-1;
until not (k>j);
a[j,m]:=g;
j:=i;
end
else
begin
j:=j+1;
end;
begin
j:=j+1;
end;
until not (j<i);
i:=i+1;
until not (i<=f);
end;
end;
FUNCTION suma (a:matrix; i,m: integer): integer;
var sum: integer;
begin
sum:=0;
for m:=1 to l do
begin
if i<m then
sum:=sum+a[i,m];
suma:=sum;
end;
end;
FUNCTION gmean (summa:matrix2; i:integer):real;
var gm:real;
begin
gm:=1;
for i:=1 to f-1 do
gm:=gm*summa[i];
gmean:=exp(1/i*ln(gm));
end;
BEGIN
clrscr;
for i:=1 to f do {reading of matrix}
for m:=1 to l do
begin
write(‘a[‘,i,’,’,m,’]=’);
read(a[i,m]);
end;
SORTING;
for i:=1 to f do {showing of sorted matrix}
begin
for m:=1 to l do
write(a[i,m],’ ‘);
writeln;
end;
readln;
for i:=1 to f-1 do
begin
summa[i]:=suma(a,i,m);
writeln(‘SUMA[’,I,’]=’,summa[i]);
end;
gmeaning:=gmean(summa,i);
writeln(‘GMEAN=’, gmeaning:4:2);
readln;
end.
Таблиця ідентифікаторів, які використовуються
f
Кількість рядків у матриці
l
Кількість стовпців у матриці
matrix
Тип типу масив для двовимірної матриці
matrix2
Тип типу масив для одновимірної матриці
a
Матриця, що вводиться з клавіатури
summa
Масив, що містить в собі суму кожного елемента рядка над головною діагоналлю
i,j,m,k
Змінні для визначення позицій елементів матриці
g
Тимчасова змінна для сортування матриці
sum
Тимчасова змінна для обчислення суми елементів рядка
gm
Тимчасова змінна для обчислення середнього геометричного сум
sorting
Процедура сортування матриці
suma
Функція для обчислення суми елементів рядка
gmean
Функція для обчислення середнього геометричного сум
Результати виконання роботи:
a[1,1]=31
a[1,2]=65
a[1,3]=-83
a[1,4]=-2
a[1,5]=-85
a[2,1]=9
a[2,2]=-2
a[2,3]=11
a[2,4]=-4
a[2,5]=70
a[3,1]=52
a[3,2]=73
a[3,3]=-8
a[3,4]=-1
a[3,5]=60
a[4,1]=57
a[4,2]=83
a[4,3]=-1
a[4,4]=82
a[4,5]=50
a[5,1]=1
a[5,2]=-3
a[5,3]=-2
a[5,4]=78
a[5,5]=-9
1 -3 -83 -4 -85
9 -2 -8 -2 -9
31 65 -2 -1 50
52 73 -1 78 60
57 83 11 82 70
SUMA[1]=-175
SUMA[2]=-19
SUMA[3]=49
SUMA[4]=60
GMEAN=55.92
Висновок: На цій лабораторній роботі я вивчив синтаксис опису і використання в програмах змінних типу масив, навчився використовувати масиви для оброблення матриць, вивчив основні алгоритми сортування масивів; навчився описувати та застосовувати у програмах процедури і функції для виконання логічно закінчених алгоритмів.