20.03.2019, 05:01 [+3 UTC]
в нашей команде: 3 474 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.72 (17.03.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
09.03.2019, 10:08

Форум:
18.03.2019, 16:49

Последний вопрос:
19.03.2019, 15:15
Всего: 149055

Последний ответ:
19.03.2019, 17:48
Всего: 258002

Последняя рассылка:
19.03.2019, 23:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
11.02.2019, 10:35 »
dar777
Это самое лучшее решение! [вопрос № 194610, ответ № 277448]
17.06.2012, 09:13 »
Сергей К.
Спасибо за подробный ответ. [вопрос № 186374, ответ № 271253]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 473
zdwork
Статус: 1-й класс
Рейтинг: 126
puporev
Статус: Профессионал
Рейтинг: 104

Перейти к консультации №:
 

Консультация онлайн # 194408
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: mustang289 (Посетитель)
Отправлена: 12.01.2019, 20:14
Поступило ответов: 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.

Состояние: Консультация закрыта

Ответ # 277258 от puporev (Профессионал)

Здравствуйте, mustang289!

Код (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.


Консультировал: puporev (Профессионал)
Дата отправки: 12.01.2019, 22:07

Рейтинг ответа:

+1

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 194408

zdwork
1-й класс

ID: 402651

# 1

= общий = | 13.01.2019, 15:38 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
mustang289:

{Найти максимальный по модулю элемент матрицы rmatr[n, m].
Переставить строки и столбцы матрицы таким образом, чтобы
максимальный по модулю элемент был расположен на пересечении
k-й строки и k-го столбца
(k – вводится пользователем с клавиатуры).}

Код (Pascal) :: выделить код
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.

-----
Последнее редактирование 13.01.2019, 17:25 Зенченко Константин Николаевич (Старший модератор)

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14455 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.72 от 17.03.2019
Версия JS: 1.33 | Версия CSS: 3.35