type Mas=array of array of integer;
procedure maxmin(a:mas);
var max, min, z, Xmax,Ymax,Xmin,Ymin,j,i :integer;
begin
max:=a[0,0]; min:=a[0,0];Xmax:=0; Ymax:=0; Xmin:=0; Ymin:=0; i:=-1; j:=0;
while i<=(-2+length(a)) do
begin inc(i); j:=0;
while j<=(-1+length(a[1])) do
begin
if(i>0) or (j>0) then begin {чтобы он в [0,0] не заходил}
if a[i,j]>max then begin max:=a[i,j];Xmax:=i; Ymax:=j; end; {в цикле ищем max и его координаты}
if a[i,j]<min then begin min:=a[i,j];Xmin:=i; Ymin:=j; end; {в цикле ищем min и его координаты}
end;
inc(j);
end;
end;
z:=a[Xmax,Ymax]; a[Xmax,Ymax]:=a[Xmin,Ymin]; a[Xmin,Ymin]:=z; {меняем местами}
for i:=0 to -1+length(a) do
for j:=0 to -1+length(a[1]) do
begin if j=-1+length(a[1]) then begin write(a[i,j]); writeln; end
else write(a[i,j], ' ');end;
end;
var a:Mas; d,s,j,i: integer;
begin
writeln ('vvedite dliny matrici'); readln(d);
writeln ('vvedite shiriny matrici');readln(s);
setlength(a,d,s);
randomize;
for i:=0 to d-1 do
for j:=0 to s-1 do
begin a[i,j]:=random(51); if j=s-1 then begin write (a[i,j], ' ');writeln; end
else write (a[i,j], ' ');end; writeln;
maxmin(a);
readln;
end.
Pascal. Подпрограмма и матрица.
Прошу,помогите, пожалуйста, с решением !
В чем проблема? В написании подпрограммы? Или в нахождении минимального/максимального элемента?
Нет, лучше сказать так, я не знаю, как лучше применить подпрограмму в этом задании.
Цитата: Torah
Да, проблема в написании только подпрограммы, как найти max и min я знаю.
Нет, лучше сказать так, я не знаю, как лучше применить подпрограмму в этом задании.
Нет, лучше сказать так, я не знаю, как лучше применить подпрограмму в этом задании.
на вход подавай матрицу, на выходе изменённую матрицу.
Или параметр-матрицу сделай var и ковыряйся в ней.
Код:
Мне нужно сделать так, чтобы при первом входе в эти циклы i и j уже были не равны [0,0], а [0,1], а в последствии, каждая строка начиналась сначала, а не с элементами с индексами 1.
Ну вот внутренний цикл while он проходит по строке, если изначально j будем устанавливать =1 до начала цикла, то первую строку он будет проходить, начиная с первого индекса, а после окончания внутреннего цикла, если я каждый раз буду устанавливать j=o, следующую строку он будет проходить с самого начала ... Надо изменить. Помогите, пожалуйста.