Ознакомление с понятием процедуры и матрицы. Использование процедур и матриц при решении задач в языке Pascal

Страницы работы

Содержание работы

Балтийский Государственный

Технический Университет

«ВоенМех»

имени Д.Ф. Устинова

Отчет

к лабораторной работе по информатике №5

На тему

Процедуры и матрицы

Отчет выполнил студент

Факультета «И»

Салагаев Илья

Группа И433

Санкт-Петербург 2003

Лабораторная работа по информатике №5

Тема: Процедуры и матрицы.

Цель: Ознакомиться с понятием процедуры и матрицы. Научиться использовать их при решении задач в языке Pascal.

Исходная задача: Дана матрица A15*20. Получить массив B, элементы которого – нули и единицы, причем Bk=0 если k-ая строка матрицы симметрична, иначе Bk=1.

Блок-схема алгоритма:

начало
 

ввод a,zicl2=top И a[zicl,top]=a[zicl,m+1-top],false,true,zicl2:=1,top:= m div 2 + m mod 2,zicl 1, n,true,false,zicl2<top И a[zicl,zicl2]=a[zicl,m+1-zicl2] ,inc(zicl2),b[zicl]:=1,конец,вывод B,b[zicl]:=0 


Листинг программы, решающей данную задачу:

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) использующая матрицы. Произведенные тесты этой программы позволяют сделать вывод о правильности ее алгоритма и реализации этого алгоритма.

Похожие материалы

Информация о работе