Вспомогательный алгоритм к сигменту 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. Отладка программ: