Консультация № 194408
12.01.2019, 20:14
0.00 руб.
0 2 1
Здравствуйте! У меня возникли сложности с таким вопросом:
Найти максимальный по модулю элемент матрицы rmatr[n, m]. Переставить строки и столбцы матрицы таким образом, чтобы максимальный по модулю элемент был расположен на пересечении k-й строки и k-го столбца (k – вводится пользователем с клавиатуры).
вот матрица
Код:
var a:array[1..20,1..20] of integer;
n,i,j:byte;
begin
repeat
write('Введите размер матрицы от 2 до 20 n=');
readln(n);
until n in [2..20];
for i:=1 to n do
begin
for j:=1 to n do
begin
if j<=n-i+1 then a[i,j]:=i+j-1
else a[i,j]:=0;
write(a[i,j]:3);
end;
writeln;
end;
end.

Обсуждение

давно
Профессор
401888
1232
12.01.2019, 22:07
общий
это ответ
Здравствуйте, mustang289!
[code lang=pascal]var rmatr:array[1..10,1..10] of real;
n,m,i,j,imx,jmx,k:byte;
mx,x:real;
begin
repeat
write('Введите количество строк от 3 до 10 n=');
readln(n);
until n in [3..10];
repeat
write('Введите количество столбцов от 3 до 10 m=');
readln(m);
until m in [3..10];
randomize;
for i:=1 to n do
begin
for j:=1 to m do
begin
rmatr[i,j]:=-9+18*random;
write(rmatr[i,j]:6:2);
if i+j=2 then
begin
mx:=rmatr[1,1];
imx:=1;
jmx:=1;
end
else if abs(rmatr[i,j])>abs(mx) then
begin
mx:=rmatr[i,j];
imx:=i;
jmx:=j;
end;
end;
writeln;
end;
writeln('Максимальный по модулю элемент=',mx:0:2,' в строке ',imx,' в столбце ',jmx);
if n<m then i:=n else i:=m;
repeat
write('Введите номер строки и столбца для обмена от 1 до ',i,' k<>',imx,' k<>',jmx,' k=');
readln(k);
until (k in [1..i])and(k<>imx)and(k<>jmx);
for j:=1 to m do
begin
x:=rmatr[imx,j];
rmatr[imx,j]:=rmatr[k,j];
rmatr[k,j]:=x;
end;
for i:=1 to n do
begin
x:=rmatr[i,jmx];
rmatr[i,jmx]:=rmatr[i,k];
rmatr[i,k]:=x;
end;
writeln('Перестановка строк и столбцов с тем чтобы элемент ',mx:0:2);
writeln('оказался в ячейке [',k,',',k,']');
for i:=1 to n do
begin
for j:=1 to m do
write(rmatr[i,j]:6:2);
writeln;
end;
end.[/code]
давно
Студент
402651
154
13.01.2019, 15:38
общий
13.01.2019, 17:25
Адресаты:
{Найти максимальный по модулю элемент матрицы rmatr[n, m].
Переставить строки и столбцы матрицы таким образом, чтобы
максимальный по модулю элемент был расположен на пересечении
k-й строки и k-го столбца
(k – вводится пользователем с клавиатуры).}

[code lang=pascal h=300]var
a: array[1..20, 1..20] of integer;
n, m, i, j, k, k_min, i_max, j_max, t: integer;

begin
randomize;

{Вводим n, m в диапазоне от 1 до 20}
repeat
write('Enter n, m: ');
readln(n, m);
until (n in [1..20]) and (m in [1..20]);

{Выводим матрицу на экран}
writeln('rmatr:');
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := random(100);
write(a[i, j]:4);
end;
writeln;
end;

{Ищем максимум и выводим на экран}
i_max := 1; j_max := 1;
for i := 1 to n do
for j := 1 to m do
if a[i, j] > a[i_max, j_max] then
begin
i_max := i;
j_max := j;
end;
writeln('Max = a[', i_max, ',', j_max, '] = ', a[i_max, j_max]);

{Вводим k в диапазоне от 1 до минимального из n, m}
if n < m then k_min := n
else k_min := m;
repeat
write('Enter k: ');
readln(k);
until k in [1..k_min];

{Меняем столбцы}
for i := 1 to n do
begin
t := a[i, k];
a[i, k] := a[i, j_max];
a[i, j_max] := t;
end;

{Меняем строки}
for j := 1 to m do
begin
t := a[k, j];
a[k, j] := a[i_max, j];
a[i_max, j] := t;
end;

{Выводим полученную матрицу}
writeln('New rmatr:');
for i := 1 to n do
begin
for j := 1 to m do
write(a[i, j]:4);
writeln;
end;

readln;
end.[/code]
Форма ответа