Процедуры и матрицы, их использование при решении задач в языке Pascal. Получение номеров столбцов, в которых все отрицательные числа превышают заданную величину

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

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

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

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

«ВоенМех»

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

Отчет

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

На тему

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

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

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

Батов Сергей

Группа И433

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

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

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

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

Исходная задача: Дана матрица EM*N. Где M<16 и N<11. Получить номера столбцов, в которых  все отрицательные числа превышают заданную величину.

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

начало,ввод Ematr,false,flag:=true,i 1, m,true,(i<=m) and flag ,flag2:=true,конец,ввод min,i:=1,Ematr[i,j]<0 ,i:=i+1,вывод j,flag2:=false,true,false,true,false,Ematr[i,j]<0 И
Ematr[i,j]<=min,flag:=false,flag И flag2,true 


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

program lab5;

const Mmax=15; Nmax=10;

type matrix = array [1..Mmax,1..Nmax] of real;

var Ematr: matrix;

m, n: integer;

min: real;

procedure Input_data (var m, n: integer; var Ematr: matrix; var min: real);

var i, j: integer;

begin

write('Введите размеры матрицы: '); readln(m, n);

writeln('Ввод матрицы [',m,'*',n,']: ');

for i:=1 to m do

begin

write(i,' строка [',n,'] элементов: ');

for j:=1 to n do

if j<n then read(Ematr[i,j])

else readln(Ematr[i,j]);

end;

write('Введите отрицательное число: '); readln(min);

writeln;

end;

procedure Count (m, n: integer; var mass: matrix; min: real);

var i, j, kol: integer;

flag, flag2: boolean;

begin

write('Номера искомых столбцов: ');

kol:=0;

for j:=1 to n do

begin

flag:=true;

flag2:=false;

i:=1;

while (i<=m) and flag do

begin

if Ematr[i,j]<0 then flag2:=true;

if (Ematr[i,j]<0) and (Ematr[i,j]<=min) then flag:=false;

inc(i);

end;

if flag and flag2 then

begin

write(j,' ');

inc(kol);

end;

    end;

if kol=0 then writeln(‘Отсутствуют…’) else writeln;

end;

procedure Output_data (m, n: integer; var Ematr: matrix);

var i, j: integer;

begin

writeln('Вывод исходной матрицы: ');

for i:=1 to m do

begin

for j:=1 to n do

write(Ematr[i,j]:5:0,' ');

writeln;

    end;

writeln;

end;

begin

Input_data (m, n, Ematr, min);

Output_data (m, n, Ematr);

Count (m, n, Ematr, min);

end.


Пояснения к используемым данным:

двумерный массив Ematr – исходная матрица переменные m и n – размеры исходной матрицы переменная min – хранит значение минимума для отриц. чисел процедура Input_data – процедура ввода матрицы и минимума процедура Count – процедура обработки и вывода результатов процедура Output_data – процедура вывода матрицы переменные i и j – переменные цикла переменная flag – определяет, все ли отриц. числа превосходят минимум переменная flag2 – определяет, есть ли в j-ом столбце отриц. элементы переменная kol – определяет кол-во столбцов

Тестовые данные:

1)  A3*4 = -1  2  3  4        min = -3    Ответ:  1                                                                                                                                             

1  2  3  4

0  0  0 -9

2)  A3*4 = -1   2  -1  4        min = -2    Ответ:  1  3                                                                                                                                        

1 -2   3  4

0  0   0   9

3)   A3*41   2 1  4 min = -2    Ответ:  Отсутствуют…                                                                                                                                        

1 -2  3  4

0  0  0  9

Вывод: Мною было изучено понятие процедуры, для закрепления изученного материала была написана программа (lab5.pas) использующая матрицы. Произведенные тесты этой программы позволяют сделать вывод о правильности ее алгоритма и реализации этого алгоритма.

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

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