- •Расчетное задание по информатике. Вариант 13.
- •Внешняя спецификация
- •Постановка задачи
- •Состав данных
- •Форма ввода
- •Выходная форма
- •Аномалии.
- •Основной алгоритм программы
- •Сегменты
- •Внутренняя спецификация сегмента 1.1
- •Подзадача
- •Состав данных
- •1.2 Внутренняя спецификация сегмента 1.2
- •Подзадача
- •Состав данных
- •1.3 Внутренняя спецификация сегмента 1.3
- •Подзадача
- •Состав данных
- •1.4 Внутренняя спецификация сегмента 1.4
- •1. Подзадача
- •2. Состав данных
- •Паскаль-программа блочной структуры.
- •Паскаль-программа модульной структуры:
- •Отладка программ
- •Визуальный контроль корректности программ
- •Тестирование
- •Алгоритм
- •Рекомендации по использованию программы.
Паскаль-программа блочной структуры.
PROGRAM TIPOVOY_v2;
TYPE DM=array[1..5,1..5] of real;
OM=array[1..5] of real;
VAR B,A:DM;
SRA:real;
MINNA,J,I:integer;
SUMSA:OM;
f1,f2:text;
PROCEDURE NSUMS(VAR X:DM; M,N:integer; VAR SUMSX);
TYPE V=array[1..10900] of real;
VAR I,J:integer;
Begin
FOR I:=1 TO M DO
FOR J:=1 TO N DO
V(SUMSX)[I]:=V(SUMSX)[I]+X[I,J]
End;
FUNCTION POISK(VAR SUMSX;M:integer):integer;
TYPE V=array[1..10900] of real;
VAR MINNX,I:integer;
MINSUMX:real;
Begin
MINSUMX:=V(SUMSX)[1];
MINNX:=1;
FOR I:=1 TO M DO
IF MINSUMX>(V(SUMSX)[I]) THEN
begin
MINSUMX:=V(SUMSX)[I];
MINNX:=I
end;
POISK:=MINNX
End;
FUNCTION SRAREFM(VAR X:DM;M:integer):real;
VAR SUMRS,SRX:real;
I,J:integer;
Begin
SUMRS:=0;
FOR J:=2 TO M DO
FOR I:=1 TO J-1 DO
SUMRS:=SUMRS+X[I,J];
SRX:=SUMRS/(((sqr(M)-M)/2));
SRAREFM:=SRX
End;
PROCEDURE IZM(VAR X:DM; M,N:integer;VAR MINNX:integer;VAR SRX:real;VAR Y:DM);
VAR J,I:integer;
Begin
FOR I:=1 TO M DO
IF I=MINNX THEN
FOR J:=1 TO N DO
Y[I,J]:=X[I,J]+SRX
ELSE
FOR J:=1 TO N DO
Y[I,J]:=X[I,J];
End;
BEGIN
ASSIGN(f1,'ISHOD.PAS');
ASSIGN(f2,'vuh.pas');
RESET(f1);
REWRITE(f2);
FOR I:=1 TO 5 DO
Begin
FOR J:=1 TO 5 DO
read(f1,A[I,J]);
readln(f1)
End;
WRITELN(f2,' ':35,'Результаты');
NSUMS(A,5,5,SUMSA);
MINNA:=POISK(SUMSA,5);
SRA:=SRAREFM(A,5);
IF SRA=0 THEN
Begin
WRITELN(f2,'Среднее арифметическое равно нулю');
WRITELN(f2,'Матрица не изменена');
FOR I:=1 TO 5 DO
begin
FOR J:=1 TO 5 DO
WRITE(f2,A[I,J]:4:0);
WRITELN(f2);
end
End
ELSE
Begin
IZM(A,5,5,MINNA,SRA,B);
WRITELN(f2,'Изменяется первая строка при совпадении минимальных сумм');
WRITELN(f2,'Матрица B');
FOR I:=1 TO 5 DO
begin
FOR J:=1 TO 5 DO
WRITE(f2,B[I,J]:4:0);
WRITELN(f2);
end;
End;
CLOSE(f1);
CLOSE(f2);
END.
Паскаль-программа модульной структуры:
UNIT OD;
INTERFACE
TYPE DM=array[1..5,1..5] of real;
OM=array[1..5] of real;
VAR MINNA,J,I:integer;
B,A:DM;
SRA:real;
SUMSA:OM;
f1,f2:text;
IMPLEMENTATION
BEGIN
ASSIGN(f1,'ISHOD.PAS');
ASSIGN(f2,'vuh.pas');
RESET(f1);
REWRITE(f2);
END.
UNIT MSUM;
INTERFACE
USES OD;
PROCEDURE NSUMS(VAR X:DM; M,N:integer; VAR SUMSX);
IMPLEMENTATION
PROCEDURE NSUMS;
TYPE V=array[1..10900] of real;
VAR I,J:integer;
Begin
FOR I:=1 TO M DO
FOR J:=1 TO N DO
V(SUMSX)[I]:=V(SUMSX)[I]+X[I,J]
End;
END.
UNIT SEARCH;
INTERFACE
USES OD;
FUNCTION POISK(VAR SUMSX;M:integer):integer;
IMPLEMENTATION
FUNCTION POISK;
TYPE V=array[1..10900] of real;
VAR MINNX,I:integer;
MINSUMX:real;
Begin
MINSUMX:=V(SUMSX)[1];
MINNX:=1;
FOR I:=1 TO M DO
IF MINSUMX>(V(SUMSX)[I]) THEN
begin
MINSUMX:=V(SUMSX)[I];
MINNX:=I
end;
POISK:=MINNX
End;
END.
UNIT SR;
INTERFACE
USES OD;
FUNCTION SRAREFM(VAR X:DM;M:integer):real;
IMPLEMENTATION
FUNCTION SRAREFM;
VAR SUMRS,SRX:real;
I,J:integer;
Begin
SUMRS:=0;
FOR J:=2 TO M DO
FOR I:=1 TO J-1 DO
SUMRS:=SUMRS+X[I,J];
SRX:=SUMRS/(((sqr(M)-M)/2));
SRAREFM:=SRX
End;
END.
PROGRAM TPM_v13;
USES OD,MSUM,SEARCH,SR,ADD;
BEGIN
FOR I:=1 TO 5 DO
Begin
FOR J:=1 TO 5 DO
read(f1,A[I,J]);
readln(f1)
End;
WRITELN(f2,' ':35,'Результаты');
NSUMS(A,5,5,SUMSA);
MINNA:=POISK(SUMSA,5);
SRA:=SRAREFM(A,5);
IF SRA=0 THEN
Begin
WRITELN(f2,'Среднее арифметическое равно нулю');
WRITELN(f2,'Матрица не изменена');
FOR I:=1 TO 5 DO
begin
FOR J:=1 TO 5 DO
WRITE(f2,A[I,J]:4:0);
WRITELN(f2);
end
End
ELSE
Begin
IZM(A,5,5,MINNA,SRA,B);
WRITELN(f2,'Изменяется первая строка при совпадении минимальных сумм');
WRITELN(f2,'Матрица B');
FOR I:=1 TO 5 DO
begin
FOR J:=1 TO 5 DO
WRITE(f2,B[I,J]:4:0);
WRITELN(f2);
end;
End;
CLOSE(f1);
CLOSE(f2);
END.
Для компиляции Паскаль-программы модульной структуры использовался режим Make, поскольку этот режим требует минимальное время на компиляцию всей программы.
