program p175606;
{
решить задачу с использованием процедур с передачей параметров
подскажите, что надо исправить в моей.
В двумерных массивах A[N*N] и B[M*M] определить минимальное значение.
Если минимальное расположено выше побочной диагонали,
то числа на этой диагонали поменять местами (первое с последним,
второе с предпоследним и т.д.). Если минимальное расположено
ниже побочной, то заменить его средним арифмеическим этой строки
до побочной диагонали. Если минимальное расположено на самой диагонали,
то ничего не делать.
}
uses crt;
const
n=4;
m=4;
type
matr=array[1..n+m,1..n+m] of real;
var
a,b:matr;
imin,jmin,k,i,j:integer;
procedure VVOD(var d:matr;k:integer);
begin
for i:=1 to k do
for j:=1 to k do
d[i,j]:=random(20);
end;
procedure VIVOD(d:matr;k:integer;t:string);
begin
writeln;
writeln(t);
for i:=1 to k do begin
for j:=1 to k do
write(d[i,j]:5:1);
writeln;
end;
end;
procedure MIN(d:matr;k:integer;var imin,jmin:integer);
var
min:real;
begin
(*********************)
min := d[1,1];
imin := 1;
jmin := 1;
(*********************)
for i:=1 to k do
for j:=1 to k do
if d[i,j]<min then begin
min:=d[i,j];
imin:=i;
jmin:=j;
end;
writeln('min=',min:4:1);
writeln('stroka=',imin);
writeln('stolb=',jmin);
end;
procedure SORT(var d:matr;k:integer;t,t1:string);
var
imin,jmin:integer;buf,sum:real;
(*=2=*)
jnach: integer;
(*=2=*)
begin
sum:=0;
VVOD(d,k);
VIVOD(d,k,t);
MIN(d,k,imin,jmin);
(*=2=*)
if (imin+jmin)<(k+1) then begin
jnach:=imin+jmin-1;
for i:=1 to jnach div 2 do begin
buf:=d[i,jnach+1-i];
d[i,jnach+1-i]:=d[jnach+1-i,i];
d[jnach+1-i,i]:=buf;
end;
(*=2=*)
VIVOD(d,k,'vishe po6o4noi'+t1);
end
else if (imin+jmin)>(k+1) then begin
(*********************)
if imin=k then
{ последняя строка, нет элементов
перед побочной диагональю }
d[imin,jmin]:=0
else begin
sum := 0;
for j:=1 to k-imin do
sum:=sum+d[imin,j];
d[imin,jmin]:=sum/(k-imin);
end;
(*********************)
VIVOD(d,k,'nizhe pobo4noi ' +t1);
end
(*********************)
else
VIVOD(d,k,'na po6o4noi'+t1);
(*********************)
end;
BEGIN
clrscr;
randomize;
SORT(a,n,'Matr A',' Otsort Matr A');
window(40,1,80,25);
SORT(b,m,'Matr B',' Otsort Matr B');
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.