06.10.2008, 07:20
общий
это ответ
Здравствуйте, Сухотерин Андрей Сергеевич!
Эту задачу можно решить по разному. Предлагаю следущий способ: сортируем матрицу построчно по невозрастанию, потом ищем в ней первые два одинаковых элемента. Код программы в приложении.
Приложение:
uses crt;
const n=4; {размеры матрицы}
m=5;
var a:array[1..n,1..m]of integer; {матрица}
i,i2,i3,v,k:integer; {счетчики циклов, буфер для обмена,счетчик совпадений}
begin
clrscr;
randomize;
for i:=1 to n do
begin
for i2:=1 to m do
begin
a[i,i2]:=random(100);{заполним матрицу случайными числами в инт[0,99]}
write(a[i,i2]:3);
end;
writeln;
end;
k:=0;
for i3:=1 to n*m do {сортировка матрицы}
for i:=1 to n do
for i2:=1 to m do
begin
if i2<>m then {если элемент в строке не последний}
begin
if a[i,i2+1]>a[i,i2] then {обычная сортировка пузырьком}
begin
v:=a[i,i2+1];
a[i,i2+1]:=a[i,i2];
a[i,i2]:=v;
end;
end
else
if (a[i+1,1]>a[i,i2])and(i<>n) then {если строка не последняя}
begin
v:=a[i+1,1]; {меняем первый элемент в следущей строке с последним элементом в текущей строке}
a[i+1,1]:=a[i,i2];
a[i,i2]:=v;
end;
end;
k:=0;
for i3:=1 to n*m do {поиск первых двух одинаковых}
for i:=1 to n do
for i2:=1 to m do
begin
if i2<>m then {если элемент в строке не последний}
begin
if a[i,i2+1]=a[i,i2] then {находим}
begin
writeln('Max element >1 raza=',a[i,i2]);{выводим сообщение}
k:=k+1; {фиксируем (вместо к можно переменную типа boolean)}
readln;
exit; {выходим из программы}
end;
end
else
if (a[i+1,1]>a[i,i2])and(i<>n) then {если строка не последняя}
begin
writeln('Max element >1 raza=',a[i,i2]);
k:=k+1;
readln;
exit;
end;
end;
if k=0 then writeln('Takogo chisla net!');
readln;
end.