Консультация № 159405
02.02.2009, 15:34
0.00 руб.
0 9 1
Здравсвуйте, помогите, пожалйста написать программу . Создать целочисленный двумерный массив А, имеющий строки и 4 столбца,с помощью генератора случайных чисел от 0-50, и поменять местами минимальные и максимальные элементы массива.

Обсуждение

Неизвестный
02.02.2009, 16:01
общий
это ответ
Здравствуйте, Melen!
Программа с краткими комментариями. Меняет первый встретившийся элемент с минимальным значением на первый встретившийся с максимальным значением.

Приложение:
program Pascal_159405;
{ Размер массива }
const
N=4;
var
A:array[1..N,1..N]of integer;
i,j,tmp:integer;
Max,Min:^integer;
begin
Randomize;
{ Создаем массив и выводим его на экран }
WriteLn('Array:');
for i := 1 to N do begin
for j := 1 to N do begin
A[i,j]:=Random(51);
Write(A[i,j]:4,' ');
end;
WriteLn;
end;
{ Ищем максимальный и минимальный элементы }
Max:=@A[1,1];
Min:=@A[1,1];
for i := 1 to N do
for j := 1 to N do begin
if Max^<A[i,j] then Max:=@A[i,j];
if Min^>A[i,j] then Min:=@A[i,j];
end;
WriteLn('Min=',Min^);
WriteLn('Max=',Max^);
{ Меняем местами }
tmp:=Max^;
Max^:=Min^;
Min^:=tmp;
{ Выводим результат }
WriteLn('Result Array:');
for i := 1 to N do begin
for j := 1 to N do Write(A[i,j]:4,' ');
WriteLn;
end;
ReadLn;
end.
Неизвестный
02.02.2009, 16:03
общий
Вы написали имеющий строки и 4 столбца. Из условия не ясно сколько строк.
Неизвестный
02.02.2009, 16:13
общий
4 строки и 4 столбца
Неизвестный
02.02.2009, 17:06
общий
Так оно в программе и есть.
Неизвестный
02.02.2009, 17:08
общий
ток та немного подругому
Неизвестный
02.02.2009, 17:27
общий
Что по другому? Программа все делает согласно условию.
давно
Профессор
401888
1232
02.02.2009, 17:36
общий
Наверное Вам надо как попроще и без указателей, примерно так.
Код:
uses crt;
const n=4;
var a:array[1..n,1..n] of byte;
i,j,min,max,imin,jmin,imax,jmax,x:byte;
begin
clrscr;
randomize;
writeln('Ishodnaua matrica A:');
min:=50;max:=0;imin:=1;jmin:=1;imax:=1;jmax:=1;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(51);
if a[i,j]<min then
begin
min:=a[i,j];
imin:=i;
jmin:=j;
end
else if a[i,j]>max then
begin
max:=a[i,j];
imax:=i;
jmax:=j;
end;
write(a[i,j]:4);
end;
writeln;
end;
x:=a[imin,jmin];
a[imin,jmin]:=a[imax,jmax];
a[imax,jmax]:=x;
writeln('Rezultat:');
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
readln
end.
Неизвестный
02.02.2009, 17:48
общий
Может надо было и без указателей написать. Только мне хотелось поменьше переменных вводить. Поэтому и указатели использовал.
давно
Профессор
401888
1232
02.02.2009, 17:50
общий
Поскольку задача уж очень простая и решение ее выглядит невзрачно, можно слегка усложнить ее и украсить, чтобы минимальный и максимальный элементы подсвечивались и будет хорошо видно, как они поменялись местами.
Код:
uses crt;
const n=4;
var a:array[1..n,1..n] of byte;
i,j,min,max,imin,jmin,imax,jmax,x:byte;
begin
clrscr;
randomize;
writeln('Ishodnaua matrica A:');
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(51);
min:=50;max:=0;imin:=1;jmin:=1;imax:=1;jmax:=1;
for i:=1 to n do
for j:=1 to n do
if a[i,j]<min then
begin
min:=a[i,j];
imin:=i;
jmin:=j;
end
else if a[i,j]>max then
begin
max:=a[i,j];
imax:=i;
jmax:=j;
end;
for i:=1 to n do
begin
for j:=1 to n do
if (i=imin)and(j=jmin) then
begin
TextColor(14);
write(a[i,j]:4);
end
else if (i=imax)and(j=jmax) then
begin
TextColor(12);
write(a[i,j]:4);
end
else
begin
TextColor(15);
write(a[i,j]:4);
end;
writeln;
end;
x:=a[imin,jmin];
a[imin,jmin]:=a[imax,jmax];
a[imax,jmax]:=x;
writeln('Rezultat:');
for i:=1 to n do
begin
for j:=1 to n do
if (i=imin)and(j=jmin) then
begin
TextColor(14);
write(a[i,j]:4);
end
else if (i=imax)and(j=jmax) then
begin
TextColor(12);
write(a[i,j]:4);
end
else
begin
TextColor(15);
write(a[i,j]:4);
end;
writeln;
end;
readln
end.
Форма ответа