Найти Max/Min выше/ниже главной диагонали матрицы
-
- Сообщения: 14
- Зарегистрирован: 31 мар 2009, 20:16
- Откуда: Кубинка
- Контактная информация:
Определить max элемент среди элементов квадратичной матрицы размера 5x5, лежащих выше главной диагонали, и min элемент среди элементов, лежащих ниже главной диагонали. Поменять их местами.
-
- Сообщения: 526
- Зарегистрирован: 03 янв 2009, 23:17
- Откуда: Voronezh
- Контактная информация:
Матрицы не надо ненавидить, матрицы надо любить!
Если подумать, можно сделать компактней:
[syntax=pascal]
uses crt;
var a:array[1..5,1..5] of real;
i,j,iMax,jMax,iMin,jMin:byte;
max,min,buf:real;
begin
clrscr;
writeln('Vvodite elementy: ');
for i:=1 to 5 do
for j:=1 to 5 do
begin
write('[',i,',',j,']: ');
readln(a[i,j]);
end;
clrscr;
writeln('Ishodnaia matrivca: ');
for i:=1 to 5 do
begin
writeln;
for j:=1 to 5 do write(a[i,j]:6:2,' ');
end;
max:=a[1,2];
min:=a[2,1];
for i:=1 to 5 do
for j:=1 to 5 do
begin
if j>i then
if max<a[i,j] then
begin
max:=a[i,j];
iMax:=i;
jMax:=j;
end;
if j<i then
if min>a[i,j] then
begin
min:=a[i,j];
iMin:=i;
jMin:=j;
end;
end;
buf:=a[iMax,jMax];
a[iMax,jMax]:=a[iMin,jMin];
a[iMin,jMin]:=buf;
writeln;
writeln('Rezultiruiuischaia matrica: ');
for i:=1 to 5 do
begin
writeln;
for j:=1 to 5 do write(a[i,j]:6:2,' ');
end;
readln;
end.
[/syntax]
Если подумать, можно сделать компактней:
[syntax=pascal]
uses crt;
var a:array[1..5,1..5] of real;
i,j,iMax,jMax,iMin,jMin:byte;
max,min,buf:real;
begin
clrscr;
writeln('Vvodite elementy: ');
for i:=1 to 5 do
for j:=1 to 5 do
begin
write('[',i,',',j,']: ');
readln(a[i,j]);
end;
clrscr;
writeln('Ishodnaia matrivca: ');
for i:=1 to 5 do
begin
writeln;
for j:=1 to 5 do write(a[i,j]:6:2,' ');
end;
max:=a[1,2];
min:=a[2,1];
for i:=1 to 5 do
for j:=1 to 5 do
begin
if j>i then
if max<a[i,j] then
begin
max:=a[i,j];
iMax:=i;
jMax:=j;
end;
if j<i then
if min>a[i,j] then
begin
min:=a[i,j];
iMin:=i;
jMin:=j;
end;
end;
buf:=a[iMax,jMax];
a[iMax,jMax]:=a[iMin,jMin];
a[iMin,jMin]:=buf;
writeln;
writeln('Rezultiruiuischaia matrica: ');
for i:=1 to 5 do
begin
writeln;
for j:=1 to 5 do write(a[i,j]:6:2,' ');
end;
readln;
end.
[/syntax]
Нет религии выше истины
-
- Сообщения: 14
- Зарегистрирован: 31 мар 2009, 20:16
- Откуда: Кубинка
- Контактная информация:
Спасибо огромное!