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

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.

  1. Паскаль-программа модульной структуры:

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, поскольку этот режим требует минимальное время на компиляцию всей программы.