2. Состав данных:
Тип |
Имя |
Смысл |
Структура |
Входные данные |
|||
Вещ |
A |
Заданная матрица |
Массив, двумерный 5 строк, 6 столбцов |
Цел |
N2 |
Заданный номер столбца |
Простая переменная |
Выходные данные |
|||
Вещ |
С1 |
Искомый массив |
Массив, одномерный 5 элементов |
Промежуточные данные |
|||
Цел |
i |
Номер строки |
Простая переменная |
3. Данная подзадача реализована в Turbo Pascal 7.0 как процедура общего назначения, поскольку ее выходной параметр – массив.
Имя процедуры – SOZMAS.
4. Аномалии не анализируются.
Сегмент 1.1.
Начало
Задать: {A}
J:=1
S1(j):=0
i:=1
S1(j):=S1(j)+A(i,j)
i:=i+1
Нет
i>5
Да
j:=j+1
Нет
j>6
Да
Передать: {S1}
Конец
Сегмент 1.2
Начало
Задать: {S2}, D
M:=S2(1)
MST:=1
i:=1
Да Нет
S2(i)≥M
M:=S2(i)
MST:=i
i:=i+1
Нет
i>D
Передать: MST
Конец
Сегмент 1.3
Начало
Задать: {A}, N1
j:=1
i:=1
B1(i,j):=A(i,j)
i:=i+1
i>5 Нет
Да
j:=j+1
j>N1 Нет
Да
Передать: {B1}
Конец
Сегмент 1.4
Начало
Задать: {A}, N2
i:=1
C1(i):=A(i,N2)
i:=i+1
Нет
i>5
Да
Передать: {C1}
Конец
Паскаль-программа блочной структуры:
PROGRAM tipovichok;
TYPE MATRICA=array[1..5,1..6] of real;
MASSIV=array[1..6] of real;
VAR A,B:MATRICA;
C,SU:MASSIV;
N,i,j:integer;
f1,f2:text;
Procedure SUMST(Var A:MATRICA;Var S1:MASSIV);
Var i,j:integer;
Begin
For j:=1 to 6 do
begin
S1[j]:=0;
For i:=1 to 5 do
S1[j]:=S1[j]+A[i,j]
end
End;
Function MST(Var S2;D:integer):integer;
Type AXAXA=array[1..10922] of real;
Var i,ms:integer;
M:real;
Begin
M:=AXAXA(S2)[1];
ms:=1;
For i:=1 to D do
If AXAXA(S2)[i]>=M Then
begin
M:=AXAXA(S2)[i];
ms:=i
end;
MST:=ms
End;
Procedure SOZMATR(Var A:MATRICA;N1:integer;Var B1:MATRICA);
Var i,j:integer;
Begin
For j:=1 to N1 do
For i:=1 to 5 do
B1[i,j]:=A[i,j]
End;
Procedure SOZMAS(Var A:MATRICA;N2:integer;Var C1:MASSIV);
Var i:integer;
Begin
For i:=1 to 5 do
C1[i]:=A[i,N2]
End;
BEGIN
assign(f1,'slish.pas');
assign(f2,'mish.pas');
reset(f1);
rewrite(f2);
For i:=1 to 5 do
begin
For j:=1 to 6 do
Read(f1,A[i,j]);
Readln(f1);
end;
Read(f1,N);
Writeln(f2,' ':35,'Результаты');
Writeln(f2);
SUMST(A,SU);
If MST(SU,6)>N Then
begin
SOZMATR(A,MST(SU,6),B);
Writeln(f2,' ':13,'{B}:');
For i:=1 to 5 do
begin
Write(f2,' ':10);
For j:=1 to MST(SU,6) do
write(f2,B[i,j]:6:1,' ');
Writeln(f2)
end;
end
Else
begin
SOZMAS(A,N,C);
Write(f2,' ':10,'{C}: ');
For i:=1 to 5 do
Write(f2,C[i]:6:1,' ')
end;
close(f1);
close(f2)
END.
Паскаль-программа модульной структуры:
UNIT OBIVL;
INTERFACE
TYPE MATRICA=array[1..5,1..6] of real;
MASSIV=array[1..6] of real;
VAR A,B:MATRICA;
C,SU:MASSIV;
N,i,j:integer;
f1,f2:text;
IMPLEMENTATION
BEGIN
assign(f1,'slish.pas');
assign(f2,'mish.pas');
reset(f1);
rewrite(f2)
END.
UNIT A1;
INTERFACE
USES OBIVL;
Procedure SUMST(Var A:MATRICA;Var S1:MASSIV);
Function MST(Var S2;D:integer):integer;
IMPLEMENTATION
Procedure SUMST;
Var i,j:integer;
Begin
For j:=1 to 6 do
begin
S1[j]:=0;
For i:=1 to 5 do
S1[j]:=S1[j]+A[i,j]
end
End;
Function MST;
Type AXAXA=array[1..10922] of real;
Var i,ms:integer;
M:real;
Begin
M:=AXAXA(S2)[1];
ms:=1;
For i:=1 to D do
If AXAXA(S2)[i]>=M Then
begin
M:=AXAXA(S2)[i];
ms:=i
end;
MST:=ms
End;
END.
UNIT B1;
INTERFACE
USES OBIVL;
Procedure SOZMATR(Var A:MATRICA;N1:integer;Var B1:MATRICA);
Procedure SOZMAS(Var A:MATRICA;N2:integer;Var C1:MASSIV);
IMPLEMENTATION
Procedure SOZMATR;
Var i,j:integer;
Begin
For j:=1 to N1 do
For i:=1 to 5 do
B1[i,j]:=A[i,j]
End;
Procedure SOZMAS;
Var i:integer;
Begin
For i:=1 to 5 do
C1[i]:=A[i,N2]
End;
END.
Program tipovichok_mod;
USES OBIVL,A1,B1;
Begin
For i:=1 to 5 do
begin
For j:=1 to 6 do
Read(f1,A[i,j]);
Readln(f1);
end;
Read(f1,N);
Writeln(f2,' ':35,'Результаты');
Writeln(f2);
SUMST(A,SU);
If MST(SU,6)>N Then
begin
SOZMATR(A,MST(SU,6),B);
Writeln(f2,' ':13,'{B}:');
For i:=1 to 5 do
begin
Write(f2,' ':10);
For j:=1 to MST(SU,6) do
write(f2,B[i,j]:6:1,' ');
Writeln(f2)
end;
end
Else
begin
SOZMAS(A,N,C);
Write(f2,' ':10,'{C}: ');
For i:=1 to 5 do
Write(f2,C[i]:6:1,' ')
end;
close(f1);
close(f2)
end.
Для компиляции Паскаль-программы модульной структуры использовался режим Make, поскольку этот компилятор требует минимальное время компиляции всей программы.
