Читайте также: |
|
Ввод/Вывод n |
(n<1)Ú(n>10) |
Ввод матрицы А из файла VvodMas(dat,n,A) |
А0.2.1 |
Вх.n |
Вых. A |
Ввод матрицы В из файла VvodMas(dat,n,В) |
А0.2.2 |
Вх.n |
Вых. B |
Проверка элементов матрицы А ProvMas(A,n,flagA,iiA,jjA) |
А0.4.1 |
Вх. n,A |
Вых. flagA,iiA,jjA |
Вывод матрицы А VivodMas(res,n,A,'A') |
А0.3.1 |
Вх.n,A |
Вых. -- |
Вывод матрицы В VivodMas(res,n,В,'В') |
А0.3.2 |
Вх.n,B |
Вых. -- |
Сравнение элементов А и В Sravnenie(n,A,B,f) |
А0.5 |
Вх. n,A,B |
Вых. f |
начало |
F |
Создание матрицы С SozdanieC(n,A,B,C) |
А0.6 |
Вх.n,A,B |
Вых. C |
Вывод матрицы С VivodC(res,n,C) |
А0.7 |
Вх. n,C |
Вых. -- |
конец |
Вывод по обр.7 |
Вывод по обр.8 |
Вывод по обр.10 |
+ |
+ |
+ |
– |
– |
– |
Проверка элементов матрицы В ProvMas(В,n,flagВ,iiB,jjB) |
А0.4.2 |
Вх. n,B |
Вых. flagB,iiB,jjB |
А0 |
А0.1 |
FlagАÚFlagB |
Вывод по обр.9 |
FlagА |
FlagB |
+ |
+ |
– |
– |
Программа на Delphi (с процедурами-заглушками, кроме процедур ввода и вывода).
Имена входного и выходного файлов передаются как параметры программы:
Первый – имя файла с исходными данными
Второй – имя файла для вывода исходных данных и результатов
*********************Файл основной программы Project2.dpr**************************
Program Project2;
{$APPTYPE CONSOLE}
uses Unit1; {там все константы, типы, процедуры и функции}
var {раздел описания переменных -----------------------------------------------------------------}
A,B:mas;
C:mas2;
dat,res:TextFile;
n,iiA,jjA,iiB,jjB:byte;
f,flagA,flagB:boolean;
begin {раздел операторов -----------------------------------------------------------------}
AssignFile(dat,paramstr(1));reset(dat);
AssignFile(res,paramstr(2));rewrite(res);
{ввод n --------------------------------------------------------------------------------------------}
Readln(dat,n);
writeln(res,'Размер матриц A и B: ',n,'x',n);
if (n<1) or (n>nmax) then
Begin
writeln(res,'Некорректный размер матриц.'#13#10,'Задача не решалась');
CloseFile(dat);
CloseFile(res);
Halt;
End;
{ввод и вывод матриц A и B --------------------------------------------------------------------}
VvodMas(dat,n,A);
VvodMas(dat,n,B);
CloseFile(dat);
VivodMas(res,n,A,'A');
VivodMas(res,n,B,'B');
{ Проверка элементов матриц------------------------------------------------------------------- }
ProvMas(A,n,flagA,iiA,jjA);
ProvMas(B,n,FlagB,iiB,jjB);
If flagA or flagB then
Begin
If flagA then
Begin
Writeln(res,'Некорректный элемент матрицы A');
Writeln(res,'A[', iiA, ',', jjA, '] = ', A[iiA,jjA]:8:1);
Writeln(res,'Задача не решалась');
End;
If flagB then
Begin
Writeln(res,'Некорректный элемент матрицы B');
Writeln(res,'B[', iiB, ',', jjB, '] = ', B[iiB,jjB]:8:1);
Writeln(res,'Задача не решалась');
End;
CloseFile(res);
Halt;
End;
Sravnenie(n,A,B,f); { Проверка, все ли эл-ты А больше соответстветствующих эл-ов В }
If not(f) then
writeln(res,'Элементы матрицы А не больше соответствующих элементов матрицы В') {Обр.10}
Else
Begin
{Создание и вывод матрицы С-----------------------------------------------------------------}
SozdanieC(n,A,B,C);
VivodC(res,n,C); {Обр.6.2}
End;
CloseFile(res);
End.
****************Модуль Unit1.pas со всеми процедурами и функциями**********************
unit Unit1;
interface
const nmax=10;
type
mas=array[1..nmax,1..nmax] of real;
mas2=array[1..nmax]of real;
{Ввод матрицы из файла. Файл уже открыт}
procedure VvodMas(var dat:TextFile; const n:byte; out X:mas);
Таблица соответствия параметров
Формальные параметры | Фактические параметры | Тип |
dat | dat | TextFile |
n | n | byte |
X | A(B) | mas |
{Проверка элементов матрицы}
procedure ProvMas(var X:mas; const n:byte; out flag:boolean; out ii,jj:byte);
Таблица соответствия параметров
Формальные параметры | Фактические параметры | Тип |
Х | А(В) | mas |
n | n | byte |
flag | flagA(flagB) | boolean |
iiA(B) | ii | byte |
jjA(B) | jj | byte |
{Вывод матрицы}
procedure VivodMas(var res:TextFile; const n:byte; var X:mas; const ch:char);
Таблица соответствия параметров
Формальные параметры | Фактические параметры | Тип |
res | res | TextFile |
n | n | byte |
X | A(B) | mas |
ch | ‘A’(‘B’) | char |
{ Проверка, все ли эл-ты А больше соответстветствующих эл-ов В }
procedure Sravnenie(const n:byte; const X,Y:mas; out f:boolean);
Таблица соответствия параметров
Формальные параметры | Фактические параметры | Тип |
n | n | byte |
Х | A | mas |
Y | B | mas |
f | f | boolean |
{Создание матрицы С}
procedure SozdanieC(const n:byte; var X,Y:mas; out C:mas2);
Таблица соответствия параметров
Формальные параметры | Фактические параметры | Тип |
n | n | byte |
Х | A | mas |
Y | B | mas |
C | C | mas2 |
{Вывод матрицы С}
procedure VivodC(var res:TextFile; const n:byte; var C:mas2);
Таблица соответствия параметров
Формальные параметры | Фактические параметры | Тип |
res | res | TextFile |
n | n | byte |
C | C | mas2 |
implementation
procedure VvodMas;
var i,j:byte;
begin
for i:=1 to n 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(’ Заглушка – Проверка элементов матрицы’);
{ В скобках указаны результаты для матрицы В }
{тест 3} // flagA:=true;(flagB:=false;) ii:=1; jj:=3;
{тест 4} // flagA:=false;(flagB:=true;)(ii:=1; jj:=1;)
{тест 5} // 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 n 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(’ Заглушка – Проверка условия, что все элементы А больше соответствующих В’);
{тест 6} // f:=false;
{тест 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.3; C[2]:= 8.9; C[3]:=3.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 n do writeln(res,C[i]:8:1);
end;
end.
Дата добавления: 2015-08-21; просмотров: 192 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Функциональные тесты | | | Абстракция А0.4 |