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

.

 

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

program tipovoy;

type matr=array[1..5,1..6] of real;

massiv=array[1..5] of real;

var a:matr;

b:massiv;

f1,f2:text;

i,j,k,l:integer;

v,x,y,g,h:real;

 

 

procedure nov(var a;n,m:integer;var b);

type ma=array[1..100,1..100] of real;

mas=array[1..10922] of real;

var i,j:integer;

v:real;

Begin

for i:=1 to 5 do

begin

mas(b)[i]:=0;

for j:=1 to 6 do

mas(b)[i]:=mas(b)[i]+ma(a)[i,j];

end;

End;

 

 

function max(var b;n:integer):integer;

type mas=array[1..10922] of real;

var k,i:integer;

x:real;

Begin

k:=1;

for i:=2 to 5 do

if mas(b)[k]<mas(b)[i] then

begin

mas(b)[k]:=mas(b)[i];

k:=i;

end;

max:=k;

End;

 

function min(var b;n:integer):integer;

type mas=array[1..10922] of real;

var l,i:integer;

y:real;

Begin

y:=mas(b)[1];

l:=1;

for i:=2 to 5 do

if y>mas(b)[i] then

begin

y:=mas(b)[i];

l:=i;

end;

min:=l;

End;

 

 

procedure verhvniz(var a;n,k,l:integer);

type ma=array[1..100,1..100] of real;

var j,h,z :integer;

g :real;

 

Begin

for j:=1 to 5 do

begin

g:=ma(a)[z,j];

ma(a)[z,j]:=ma(a)[h,j];

ma(a)[h,j]:=g;

end;

End;

 

 

BEGIN

assign(f1,'vdoh.pas');

assign(f2,'vidoh.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;

nov(a,i,j,b);

if (max(b,k)=1) and (min(b,l)=5) then

write(f2,’матрица не изменена’)

else

begin

z:=1

h:=k

verhvniz(a,j,z,h,max(b,i));

z:=5;

h:=L

verhvniz(a,j,z,h,max(b,i));

end;

for i:=1 to 5 do

begin

for j:=1 to 6 do

write(f2,a[i,j],' ');

writeln(f2);

end;

close(f1);

close(f2);

END.

 

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

 

Unit load ; interfase

type matr=array[1..5,1..10] of real;

massiv=array[1..5] of real;

var f1,f2:text;

Implemintation

BEGIN

assign(f1,'vdoh.pas');

assign(f2,'vidoh.pas');

reset(f1);

rewrite(f2);

end;

End.

 

Unit one;

interfase;

uses load;

procedure nov(var a;n,m:integer;var b);

implementation

procedure nov

type ma=array[1..100,1..100] of real;

mas=array[1..10922] of real;

var i,j:integer;

Begin

for i:=1 to 5 do

begin

mas(b)[i]:=0;

for j:=1 to 6 do

mas(b)[i]:=mas(b)[i]+ma(a)[i,j];

end;

End;

END.

 

Unit two;

interfase;

uses load;

function max(var b;n:integer):integer;

implementation

function max;

type mas=array[1..10922] of real;

var k,i:integer;

x:real;

Begin

x:=mas(b)[1];

k:=1;

for i:=2 to 5 do

if x<mas(b)[i] then

begin

x:=mas(b)[i];

k:=i;

end;

max:=k;

End;

end.

 

Unit three;

interfase;

uses load;

function min(var b;n:integer):integer;

implementation

function min;

type mas=array[1..10922] of real;

var l,i:integer;

y:real;

Begin

y:=mas(b)[1];

l:=1;

for i:=2 to 5 do

if y>mas(b)[i] then

begin

y:=mas(b)[i];

l:=i;

end;

min:=l;

End;

 

Unit four;

interfase;

uses load;

procedure vverh(var a;n,k:integer);

implementation

procedure vverh;

type ma=array[1..100,1..100] of real;

var j,h,z:integer;

g:real;

 

Begin

for j:=1 to 5 do

begin

g:=ma(a)[z,j];

ma(a)[z,j]:=ma(a)[h,j];

ma(a)[h,j]:=g;

end;

End;

END.

 

 

Uses load, one, two, three, four;

var i, j : integer;

begin

for i:=1 to 5 do

for j:=1 to 10 do

read(f1,a[i,j]);

readln(f1);

end;

nov(a,5,10,b);

if (max(b,5)=1) and (min(b,5)=5) then

write(f2,’матрица не изменена’)

else

begin

z:=1

h:=k

verhvniz(a,j,z,h,max(b,i));

z:=5;

h:=L

verhvniz(a,j,z,h,max(b,i));

 

end;

for i:=1 to 5 do

begin

for j:=1 to 6 do

write(f2,a[i,j],' ');

writeln(f2);

end;

close(f1);

close(f2);

END.

 

Тестовые данные.

назначение контроль данных
Исходные данные выходные данные
Тест на положительный результат (Нахождение строк с макс. и мин. Значение и перестановка их по правилу задачи) 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 1 1 1 1 1 5 5 5 5 5 5 5 5 5 5 3 3 3 3 3 4 4 4 4 4 2 2 2 2 2 1 1 1 1 1
Тест на аномалию (аномалии если мин стоит на первом месте то он изменит свой номер при перемещении мах и доступ к ниму будет потерян.) 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 1 1 1 1 1
Тест на отрицательный результат (Когда строка с макс.значением стоит на первом, а строка с мин.на последнем месте.) 5 5 5 5 5 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 1 1 1 1 1 Матрица не изменена

 

7. Отладка программ: