В произвольной целочисленной матрице поменять столбцы, содержащие минимальные и...

0 голосов
88 просмотров

В произвольной целочисленной матрице поменять столбцы, содержащие минимальные и максимальные значения. Все элементы различны. Паскаль.


Информатика (177 баллов) | 88 просмотров
0

Использовать динамический массив или статический?

Дан 1 ответ
0 голосов
Правильный ответ

Const m=4; n=6;
var 
a:array[1..m,1..n] of integer;
i,j,max,jmax,min,jmin,t:integer;
begin
Randomize;
writeln('Исходный массив:');
for i:=1 to m do
 begin
 for j:=1 to n do
  begin
   a[i,j]:=random(100);
   write(a[i,j]:4);
  end;
  writeln;
 end;
max:=a[1,1]; jmax:=1;
min:=a[1,1]; jmin:=1;
for i:=1 to m do
 for j:=1 to n do
  begin
  if a[i,j]>max then begin max:=a[i,j]; jmax:=j; end;
  if a[i,j]  end;
writeln('max = ',max,' jmax = ',jmax);
writeln('min = ',min,' jmin = ',jmin);
for i:=1 to m do
 begin
 t:=a[i,jmax]; a[i,jmax]:=a[i,jmin]; a[i,jmin]:=t;
 end;
writeln('Полученный массив:');
for i:=1 to m do
 begin
 for j:=1 to n do write(a[i,j]:4);
 writeln;
 end;
end.

Пример:
Исходный массив:
  89  80   1   6   3  15
  84   2  17   5  89  71
  89  68  90  97  75  40
  12  30  60  98  75  42
max = 98 jmax = 4
min = 1 jmin = 3
Полученный массив:
  89  80   6   1   3  15
  84   2   5  17  89  71
  89  68  97  90  75  40
  12  30  98  60  75  42

(194k баллов)
0

Чтобы все элементы были различны можно сделать небольшие корректировки (m*n <=100):<br>Const m=4; n=6;
var
a:array[1..m,1..n] of integer;
i,j,max,jmax,min,jmin:integer;
mn:set of byte; t:byte;
begin
Randomize;
writeln('Исходный массив:');
mn:=[];
for i:=1 to m do
begin
for j:=1 to n do
begin
t:=random(100);
while t in mn do t:=random(100);
a[i,j]:=t;
mn:=mn+[t];
write(a[i,j]:4);
end;
writeln;
end;
...

0

С клавиатуры лень вводить. И можно случайно одинаковые значения ввести.

0

Для примера пришлось бы вводить.