Балтийский Государственный
Технический Университет
«ВоенМех»
имени Д.Ф. Устинова
Отчет
к лабораторной работе по информатике №5
На тему
Процедуры и матрицы
Отчет выполнил студент
Факультета «И»
Салагаев Илья
Группа И433
Санкт-Петербург 2003
Лабораторная работа по информатике №5
Тема: Процедуры и матрицы.
Цель: Ознакомиться с понятием процедуры и матрицы. Научиться использовать их при решении задач в языке Pascal.
Исходная задача: Дана матрица A15*20. Получить массив B, элементы которого – нули и единицы, причем Bk=0 если k-ая строка матрицы симметрична, иначе Bk=1.
Блок-схема алгоритма:
Листинг программы, решающей данную задачу:
program lab5;
const n=3; m=4;
type matrix = array [1..n, 1..m] of real;
massiv = array [1..n] of byte;
var a: matrix;
b: massiv;
procedure Init (n, m: integer; var a: matrix);
var zicl, zicl2: integer;
begin
writeln('Ввод матрицы A[',n,'*',m,']:');
for zicl:=1 to n do
begin
write(zicl,' строка [',m,'] элементов: ');
for zicl2:=1 to m do
if zicl2<m then read(a[zicl,zicl2])
else readln(a[zicl,zicl2]);
end;
end;
procedure Count (n, m: integer; a: matrix; var b: massiv);
var zicl, zicl2, top: integer;
flag: boolean;
begin
top:= m div 2 + m mod 2;
for zicl:=1 to n do
begin
zicl2:=1;
while (zicl2<top) and (a[zicl,zicl2]=a[zicl,m+1-zicl2]) do
inc(zicl2);
flag:=(zicl2=top) and (a[zicl,top]=a[zicl,m+1-top]);
if flag then b[zicl]:=0
else b[zicl]:=1
end;
end;
procedure OutMatrix(n, m: integer; a: matrix);
var zicl, zicl2: integer;
begin
writeln('Вывод исходной матрицы: ');
for zicl:=1 to n do
begin
for zicl2:=1 to m do
write(a[zicl,zicl2]:6:0);
writeln;
end;
end;
procedure OutMassiv (n: integer; b: massiv);
var zicl: integer;
begin
writeln('Вывод сформированного массива B:');
for zicl:=1 to n do
write(b[zicl],' ');
writeln;
end;
begin
Init(n, m, a);
OutMatrix(n, m, a);
Count(n, m, a, b);
OutMassiv(n, b);
end.
Пояснения к используемым данным:
матрица A – исходная матрица массив B – сформированный массив константы m и n – размеры исходной матрицы процедура Init – процедура ввода матрицы A
процедура Count – процедура заполнения массива B
процедура OutMatrix – процедура вывода матрицы A
процедура OutMassiv – процедура вывода массива B
переменные zicl и zicl2 – переменные цикла переменная flag – определяет симметричность строки матрицы [тип boolean]
переменная top – хранит значение элемента, относительно которого определяется симметричность
top = m div 2 + m mod 2;
Тестовые данные:
Для уменьшения затрат на ввод данных тесты программы проводились для матрицы 3*4, 3*5 и 3*1, для этого в разделе описания констант просто менялись значения M и N.
1) A3*4 = 1 2 2 1 B = 0 1 0
1 2 3 4
0 0 0 0
2) A3*5 = 1 2 3 2 1 B = 0 1 1
1 2 3 4 5
0 0 0 0 7
3) A3*1 = 0 B = 0 0 0
2
-1
Вывод: Мною было изучено понятие процедуры, для закрепления изученного материала была написана программа (lab5.pas) использующая матрицы. Произведенные тесты этой программы позволяют сделать вывод о правильности ее алгоритма и реализации этого алгоритма.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.