- •Внешняя спецификация программы
- •Постановка задачи:
- •Состав данных:
- •Форма ввода:
- •4. Форма вывода:
- •5/6. Для решения задачи применяется метод пошагового проектирования.
- •7. Аномалии:
- •8. Тесты:
- •Основной алгоритм программы:
- •Подзадача:
- •Состав данных:
- •Аномалии:
- •Подзадача:
- •Состав данных:
- •Аномалии:
- •Подзадача:
- •Состав данных:
- •Аномалии:
- •Состав данных:
- •Аномалии:
- •Паскаль программы:
- •Отладка программы:
- •Заключение:
Состав данных:
Тип |
Имя |
Смысл |
Структура |
Входные данные |
|||
Вещ |
S |
Заданный массив |
Массив, одномерный, 5 элементов |
Цел |
М |
Заданный номер столбца |
Простая переменная |
Выходные данные |
|||
Вещ |
SU |
Искомый массив |
Простая переменная |
Промежуточные данные |
|||
Цел |
J |
Номер элемента массива |
Простая переменная |
Данная подзадача реализована в TP 7.0 как функция, поскольку она имеет один выходной параметр.
Аномалии:
Аномалии не анализируются.
Вспомогательный алгоритм 1.4. :
Задать: {S}, M
J: = J + 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.
