
- •Национальный исследовательский университет «мэи» Типовой расчет «Процедуры, функции, модули» Вариант 22
- •3.Примеры.
- •4. Таблица данных
- •7. Аномалии
- •8. Функциональные тесты
- •9. Метод
- •10. Алгоритм
- •11. Программа на Delphi (с процедурами-заглушками, кроме процедур ввода и вывода).
- •Var {раздел описания переменных -----------------------------------------------------------------}
- •{Ввод m,n --------------------------------------------------------------------------------------------}
- •{Ввод и вывод матриц a и b --------------------------------------------------------------------}
- •2.Уточненная постановка задачи.
- •4. Таблица данных
- •10. Алгоритм
- •11. Программа на паскале. Процедура общего вида
- •Var I,j:byte;
- •2.Уточненная постановка задачи.
- •3.Примеры.
- •4. Таблица данных
- •10. Алгоритм
- •11. Программа на паскале. Процедура общего вида
- •Var I,j:byte;
- •2.Уточненная постановка задачи.
- •3.Примеры.
- •4. Таблица данных
- •10. Алгоритм
- •11. Программа на паскале. Процедура общего вида
- •Var I,j:byte;
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