- •I. 1.Внешняя спецификация.
- •1.1 Постановка задачи:
- •1.2 Состав данных.
- •1.3 Форма ввода.
- •1.4 Форма вывода.
- •1.5/6 При декомпозиции задачи выделены следующие подзадачи:
- •1.7 Аномалии:
- •1.8 Тесты:
- •2. Внутренняя спецификация сегмента 1.1
- •2.1.1 Подзадача:
- •2.1.2 Состав данных
- •Внутренняя спецификация сегмента 1.2
- •2.2.1 Подзадача:
- •Внутренняя спецификация сегмента 1.3
- •2.3.1 Подзадача:
- •2.3.2 Состав данных
- •II. Алгоритмы
- •III. 1.Паскаль-программа блочной структуры.
- •IV. Отладка программ:
- •1. Отладка программы блочной структуры.
- •2. Отладка программы модульной структуры.
- •2) Структурное тестирование программы.
- •VI. Рекомендации по применению.
III. 1.Паскаль-программа блочной структуры.
PROGRAM TR_8;
CONST kk=50;
TYPE MATR=array [1..kk,1..kk] of integer;
VAR i,j,k:integer;
A:MATR;
F:boolean;
f1,f2:text;
FUNCTION simm (Var A:MATR;k:integer):boolean;
Var n:integer;
Begin
n:=0;
F:=FALSE;
FOR i:=1 TO (k-1) DO
FOR j:=(i+1) TO k DO
IF A[i,j]=A[j,i] THEN
n:=n+1;
IF n=10 THEN
F:=TRUE;
simm:=F
End;
PROCEDURE OBN (Var A:MATR;k:integer);
Begin
FOR i:=1 TO (k-1) DO
FOR j:=(i+1) TO k DO
A[i,j]:=0
End;
FUNCTION sum(Var A:MATR;k:integer):integer;
Var S: integer;
Begin
S:=0;
FOR i:=2 TO k DO
FOR j:=1 TO (i-1) DO
S:=S+A[i,j];
sum:=S
End;
BEGIN
ASSIGN (f1,'isdan.pas');
ASSIGN (f2,'vdan.pas');
RESET (f1);
REWRITE (f2);
READ (f1,k);
READLN (f1);
FOR i:=1 TO k DO
Begin
FOR j:=1 TO k DO
Read (f1,A[i,j]);
Readln (f1)
End;
WRITELN (f2,' ':35,'РЕЗУЛЬТАТЫ');
F:=simm(A,k);
IF F THEN
Begin
OBN(A,k);
FOR i:=1 TO k DO
Begin
FOR j:=1 TO k DO
WRITE (f2,' ',A[i,j]);
WRITELN (f2)
End;
WRITELN (f2,' ':25,'сумма= ',sum(A,k))
End
ELSE
WRITELN (f2,' ':25,'Матрица не симметрична');
CLOSE (f1);
CLOSE (f2)
END.
2. Паскаль-программа модульной структуры.
UNIT OBIVL;
INTERFACE
CONST kk=50;
TYPE MATR=ARRAY [1..kk,1..kk] of integer;
VAR i,j,k:integer;
A:MATR;
F:boolean;
f1,f2:text;
IMPLEMENTATION
BEGIN
ASSIGN (f1,'isdan.pas');
ASSIGN (f2,'vdan.pas');
RESET (f1);
REWRITE (f2)
END.
UNIT PFUN;
INTERFACE
USES OBIVL;
FUNCTION simm (Var A:MATR;k:integer):boolean;
FUNCTION sum(Var A:MATR;k:integer):integer;
IMPLEMENTATION
FUNCTION simm;
Var n:integer;
Begin
n:=0;
F:=FALSE;
FOR i:=i TO (k-1) DO
FOR j:=(i+1) TO k DO
IF A[i,j]=A[j,i] THEN
n:=n+1;
IF n=10 THEN
F:=TRUE;
simm:=F
End;
FUNCTION sum;
Var S: integer;
Begin
S:=0;
FOR i:=2 TO k DO
FOR j:=1 TO (i-1) DO
S:=S+A[i,j];
sum:=S
End;
END.
UNIT PPROC;
INTERFACE
USES OBIVL;
PROCEDURE OBN (Var A:MATR;k:integer);
IMPLEMENTATION
PROCEDURE OBN;
begin
FOR i:=1 TO (k-1) DO
FOR j:=(i+1) TO k DO
A[i,j]:=0
End;
END.
Основная программа.
PROGRAM TR_8;
USES OBIVL,PFUN,PPROC;
BEGIN
READ (f1,k);
READLN (f1);
FOR i:=1 TO k DO
begin
FOR j:=1 TO k DO
read (f1,A[i,j]);
readln (f1)
end;
WRITELN (f2,' ':35,'РЕЗУЛЬТАТЫ');
F:=simm(A,k);
IF F THEN
Begin
OBN(A,k);
FOR i:=1 TO k DO
begin
FOR j:=1 TO k DO
WRITE (f2,' ',A[i,j]);
WRITELN (f2)
End;
writeln (f2,' ':25,'сумма= ',sum(A,k))
End
ELSE
WRITELN (f2,' ':25,'Матрица не симметрична');
CLOSE (f1);
CLOSE (f2)
END.