Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tipovoy_Raschet_Сергей.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
85.99 Кб
Скачать

10. Алгоритм

11. Программа на Delphi (с процедурами-заглушками, кроме процедур ввода и вывода).

Имена входного и выходного файлов передаются как параметры программы:

Первый – имя файла с исходными данными

Второй – имя файла для вывода исходных данных и результатов

*********************Файл основной программы Project2.dpr**************************

program Project2;

{$APPTYPE CONSOLE}

uses Unit1; {там все константы, типы, процедуры и функции}

Var {раздел описания переменных -----------------------------------------------------------------}

A,B:mas;

C:mas2;

dat,res:TextFile;

m,n,ii,jj:byte;

f,flagA,flagB:boolean;

begin {раздел операторов -----------------------------------------------------------------}

AssignFile(dat,paramstr(1));reset(dat);

AssignFile(res,paramstr(2));rewrite(res);

{Ввод m,n --------------------------------------------------------------------------------------------}

readln(dat,m,n);

writeln(res,'Размер матриц A и B: ',m,'x',n); {Обр.3}

if (m<1) or (m>mnmax) or (n<1) or (n>mnmax) then

begin

writeln(res,'Некорректный размер матриц.'#13#10,'Задача не решалась'); {Обр.7}

CloseFile(dat);

CloseFile(res);

Halt;

end;

{Ввод и вывод матриц a и b --------------------------------------------------------------------}

VvodMas(dat,m,n,A);

VvodMas(dat,m,n,B);

closeFile(dat);

VivodMas(res,m,n,A,'A');

VivodMas(res,m,n,B,'B');

{ Проверка элементов матриц------------------------------------------------------------------- }

ProvMas(A,m,n,flagA,ii,jj);

ProvMas(B,m,n,FlagB,ii,jj);

If flagA or flagB then

Begin

If flagA then

begin

Writeln(res,'Некорректный элемент матрицы A'); {Обр.8}

Writeln(res,'A[', ii , ',' , jj , '] = ' , A[ii,jj]:8:1);

Writeln(res,'Задача не решалась');

end;

If flagB then

Begin

Writeln(res,'Некорректный элемент матрицы B'); {Обр.9}

Writeln(res,'B[', ii , ',' , jj , '] = ' , B[ii,jj]:8:1);

Writeln(res,'Задача не решалась');

end;

closeFile(res);

Halt;

end;

Sravnenie(m,n,A,B,f); { Проверка, все ли эл-ты А больше соответстветствующих эл-ов В }

if not(f) then

writeln(res,'Элементы матрицы А не больше соответствующих элементов матрицы В') {Обр.10}

else

begin

{Создание и вывод матрицы С-----------------------------------------------------------------}

SozdanieC(m,n,A,B,C);

VivodC(res,m,C); {Обр.6.2}

end;

closeFile(res);

end.

****************Модуль Unit1.pas со всеми процедурами и функциями**********************

unit Unit1;

interface

const mnmax=10;

type

mas=array[1..mnmax,1..mnmax] of real;

mas2=array[1..mnmax]of real;

{Ввод матрицы из файла. Файл уже открыт}

procedure VvodMas(var dat:TextFile; const m,n:byte; out X:mas);

Таблица соответствия параметров

Формальные параметры

Фактические параметры

Тип

dat

dat

TextFile

m

m

byte

n

n

byte

X

A(B)

mas

{Проверка элементов матрицы}

procedure ProvMas(var X:mas; const m,n:byte; out flag:boolean; out ii,jj:byte);

Таблица соответствия параметров

Формальные параметры

Фактические параметры

Тип

Х

А(В)

mas

m

m

byte

n

n

byte

flag

flagA(flagB)

boolean

ii

ii

byte

jj

jj

byte

{Вывод матрицы}

procedure VivodMas(var res:TextFile; const m,n:byte; var X:mas; const ch:char);

Таблица соответствия параметров

Формальные параметры

Фактические параметры

Тип

res

res

TextFile

m

m

byte

n

n

byte

X

A(B)

mas

ch

‘A’(‘B’)

char

{ Проверка, все ли эл-ты А больше соответстветствующих эл-ов В }

procedure Sravnenie(const m,n:byte; const X,Y:mas; out f:boolean);

Таблица соответствия параметров

Формальные параметры

Фактические параметры

Тип

m

m

byte

n

n

byte

Х

A

mas

Y

B

mas

f

f

boolean

{Создание матрицы С}

procedure SozdanieC(const m,n:byte; var X,Y:mas; out C:mas2);

Таблица соответствия параметров

Формальные параметры

Фактические параметры

Тип

m

m

byte

n

n

byte

Х

A

mas

Y

B

mas

C

C

mas2

{Вывод матрицы С}

procedure VivodC(var res:TextFile; const m:byte; var C:mas2);

Таблица соответствия параметров

Формальные параметры

Фактические параметры

Тип

res

res

TextFile

m

m

byte

C

C

mas2

implementation

procedure VvodMas;

var i,j:byte;

begin

for i:=1 to m do

begin

for j:=1 to n do read(dat,X[i,j]);

readln(dat);

end;

end;

procedure ProvMas;

Var i, j: byte;

{описания других локальных переменных}

Begin

{Заглушка} writeln(’ Заглушка – Проверка элементов матрицы’);

{В скобках указаны результаты для матрицы В}

{тест 4} // flagA:=true;(flagB:=false;) ii:=1; jj:=3;

{тест 5} // flagA:=false;(flagB:=true;)( ii:=1; jj:=1;)

{тест 6} // flagA:=true;(flagB:=true;) ii:=2; jj:=1;(ii:=1; jj:=2)

{остальные тесты} //flagA:=false; (flagB:=false;)

End;

procedure VivodMas;

var i,j:byte;

begin

writeln(res,'Матрица ',ch,':');

for i:=1 to m do

begin

for j :=1 to n do

write(res,X[i,j]:8:1);

writeln(res);

end;

end;

procedure Sravnenie;

Var i, j: byte;

{описания других локальных переменных}

Begin

{Заглушка} writeln(’ Заглушка – Проверка условия, что все элементы А больше соответствующих В’);

{тест 7} // f:=true;

{тест 8} // f:=true;

{тест 9} // f:=false;

{тест 10} //f:=true;

End;

procedure SozdanieC;

Var i, j: byte;

{описания других локальных переменных}

Begin

{Заглушка} writeln(’ Заглушка – Создание матрицы С’);

{тест 7} // C[1]=8.0;

{тест 8} // C[1]:=4.6; C[2]:= -15.0; C[3]:=5.0;

{тест 10} //C[1]:=19999.0; C[2]:= -19999.0 … C[9]:=19999.0; C[10]:= -19999.0;

End;

procedure VivodC;

var i:byte;

begin

writeln(res,'Матрица С:');

for i:=1 to m do writeln(res,C[i]:8:1);

end;

end.

Абстракция А0.4

1.Условие. Проверить, есть ли в матрице элементы, абсолютная величина которых больше 1000

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]