Задача в полной мере описана в заголовке.
Суть сводится к следующему:
- Заполнить массив
- Вывести массив
- Найти минимальный элемент
- Найти максимальный элемент
- Произвести обмен значений по индексам
Предлагаю вот такую реализацию на Pascal:
[pascal]
program change;
var
A : Array [1..10,1..10] of integer;
i,j, mini, minj, maxi, maxj, min,max, temp: integer;
begin
for i := 1 to 10 do
begin
writeln();
for j := 1 to 10 do
begin
A[i,j] := random(100);
write(A[i,j], ‘ ‘);
end;
end;
min := A[1,1];
max := A[1,1];
for i := 1 to 10 do
for j := 1 to 10 do
begin
if A[i,j] < min then
begin
min := A[i,j];
mini := i;
minj := j;
end;
if A[i,j] > max then
begin
max := A[i,j];
maxi := i;
maxj := j;
end;
end;
temp:= max;
A[maxi,maxj] := A[mini,minj];
A[mini,minj] := temp;
writeln();
for i := 1 to 10 do
begin
writeln();
for j := 1 to 10 do
begin
write(A[i,j], ‘ ‘);
end;
end;
readln();
end.
[/pascal]
Демонстрация:
Если будет необходимо, могу реализовать на C++/ C#/ VB.Net и прочих :)
В данной программе переменные min и max лишние.
Если наша программа хранит значения mini, minj, то значение минимума лежит в A[mini, minj]. Заводить для этого отдельную переменную не имеет смысла.
Да, ты прав. Этого достаточно.
А что за «Writeln();»?
Ну просто перенос строки :)
Как быть, если мин>1 и макс >1?
Данный алгоритм работает только с одним мин и одним макс в массиве.
А, если мин или макс первый элемент, то тоже не работает.
program min_max;
const n=2;
m=3;
var a,a1:array[1..n,1..m] of integer;
i,j,b,z,max,min:integer;
begin
For i:=1 to n do
for j:=1 to m do
begin
read (a[i,j]);
a1[i,j]:=a[i,j];
end;
max:=a[1,1];
min:=a[1,1];
For i:=1 to n do
for j:=1 to m do
begin
if max=a[i,j] then
min:=a[i,j];
end;
writeln;
For i:=1 to n do
for j:=1 to m do
if max=a[i,j] then
a[i,j]:=min;
For i:=1 to n do
for j:=1 to m do
if (min=a[i,j])and (a1[i,j]=a[i,j]) then
a[i,j]:=max;
For i:=1 to n do
begin
for j:=1 to m do
write (a[i,j],’ ‘);
writeln;
end;
end.