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

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