Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Типовой расчет. Вариант №7..doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
176.13 Кб
Скачать
  1. Состав данных:

Тип

Имя

Смысл

Структура

Входные данные

Вещ

S

Заданный массив

Массив, одномерный,

5 элементов

Цел

М

Заданный номер столбца

Простая переменная

Выходные данные

Вещ

SU

Искомый массив

Простая переменная

Промежуточные данные

Цел

J

Номер элемента массива

Простая переменная

  1. Данная подзадача реализована в TP 7.0 как функция, поскольку она имеет один выходной параметр.

  1. Аномалии:

Аномалии не анализируются.

Вспомогательный алгоритм 1.4. :

Задать: {S}, M

J: = J + 1

Нет

Да

  1. Паскаль программы:

Паскаль программа блочной структуры:

PROGRAM TR_V7;

TYPE MASS1=ARRAY[1..5,1..5] OF REAL;

MASSIV=ARRAY[1..5] OF REAL;

VAR A:MASS1;

S:MASSIV;

SU:REAL;

I,J,M:INTEGER;

F1,F2:TEXT;

PROCEDURE SUMJ(VAR A:MASS1;VAR S1:MASSIV);

VAR I,J:INTEGER;

BEGIN

FOR J:=1 TO 5 DO

BEGIN

S1[I]:=0;

FOR I:=1 TO 5 DO

S1[J]:=S1[J]+A[I,J]

END;

END;

FUNCTION MINJ(VAR S2;N:INTEGER):INTEGER;

TYPE XM=ARRAY[1..10922] OF REAL;

VAR K,J:INTEGER;

MIN:REAL;

BEGIN

MIN:=XM(S2)[1];

K:=1;

FOR J:=1 TO N DO

BEGIN

IF XM(S2)[J]<=MIN THEN

BEGIN

MIN:=XM(S2)[J];

K:=J

END;

END;

MINJ:=K

END;

FUNCTION SUMMA1(VAR S;K:INTEGER):REAL;

TYPE BR=ARRAY[1..10922] OF REAL;

VAR J:INTEGER;

SU:REAL;

BEGIN

SU:=0;

FOR J:=1 TO MINJ(S,5) DO

BEGIN

SU:=SU+BR(S)[J]

END;

SUMMA1:=SU

END;

FUNCTION SUMMA2(VAR S;M:INTEGER):REAL;

TYPE TR=ARRAY[1..10922] OF REAL;

VAR J:INTEGER;

SU:REAL;

BEGIN

SU:=0;

FOR J:=M TO 5 DO

BEGIN

SU:=SU+TR(S)[J]

END;

SUMMA2:=SU

END;

BEGIN

ASSIGN(F1,'VGIK.PAS');

ASSIGN(F2,'BGIK.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;

READ(F1,M);

WRITELN(F2,' ':35,'REZYLTAT');

WRITELN(F2);

SUMJ(A,S);

IF MINJ(S,5)=M THEN

SU:= SUMMA1(S,MINJ(S,5))

ELSE

SU:=SUMMA2(S,M);

WRITELN(F2,' ':20,'SU= ',SU:6:3);

CLOSE(F1);

CLOSE(F2)

END.

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

UNIT OBIVL;

INTERFACE

TYPE MASS1=ARRAY[1..5,1..5] OF REAL;

MASSIV=ARRAY[1..5] OF REAL;

VAR A:MASS1;

S:MASSIV;

SU:REAL;

I,J,M:INTEGER;

F1,F2:TEXT;

IMPLEMENTATION

BEGIN

ASSIGN(F1,'VGIK.PAS');

ASSIGN(F2,'BGIK.PAS');

RESET(F1);

REWRITE(F2)

END.

UNIT OPRSUMJ;

INTERFACE

USES OBIVL;

PROCEDURE SUMJ(VAR A:MASS1;VAR S1:MASSIV);

IMPLEMENTATION

PROCEDURE SUMJ;

VAR I,J:INTEGER;

BEGIN

FOR J:=1 TO 5 DO

BEGIN

S1[I]:=0;

FOR I:=1 TO 5 DO

S1[J]:=S1[J]+A[I,J];

END;

END;

END.

UNIT OPRMINJ;

INTERFACE

USES OBIVL;

FUNCTION MINJ(VAR S2;N:INTEGER):INTEGER;

IMPLEMENTATION

FUNCTION MINJ;

TYPE XM=ARRAY[1..10922] OF REAL;

VAR K,J:INTEGER;

MIN:REAL;

BEGIN

MIN:=XM(S2)[1];

K:=1;

FOR J:=1 TO N DO

BEGIN

IF XM(S2)[J]<=MIN THEN

BEGIN

MIN:=XM(S2)[J];

K:=J

END;

END;

MINJ:=K

END;

END.

UNIT OPRSU1;

INTERFACE

USES OBIVL;

FUNCTION SUMMA1(VAR S;K:INTEGER):REAL;

IMPLEMENTATION

FUNCTION SUMMA1;

TYPE BR=ARRAY[1..10922] OF REAL;

VAR J:INTEGER;

SU:REAL;

BEGIN

SU:=0;

FOR J:=1 TO K DO

BEGIN

SU:=SU+BR(S)[J]

END;

SUMMA1:=SU

END;

END.

UNIT OPRSU2;

INTERFACE

USES OBIVL;

FUNCTION SUMMA2(VAR S;M:INTEGER):REAL;

IMPLEMENTATION

FUNCTION SUMMA2;

TYPE TR=ARRAY[1..10922] OF REAL;

VAR J:INTEGER;

SU:REAL;

BEGIN

SU:=0;

FOR J:=M TO 5 DO

BEGIN

SU:=SU+TR(S)[J]

END;

SUMMA2:=SU

END;

END.

PROGRAM MODYLTR7;

USES OBIVL,OPRSUMJ,OPRMINJ,OPRSU1,OPRSU2;

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,'REZYLTAT');

WRITELN(F2);

SUMJ(A,S);

IF MINJ(S,5)=M THEN

SU:=SUMMA1(S,MINJ(S,5))

ELSE

SU:=SUMMA2(S,M);

WRITELN(F2,' ':20,'SU ',SU:6:3);

CLOSE(F1);

CLOSE(F2)

END.