19.06.2019, 23:22 [+3 UTC]
в нашей команде: 3 713 чел. | участники онлайн: 3 (рекорд: 21)

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

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

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.77 (31.05.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
18.06.2019, 08:32

Последний вопрос:
19.06.2019, 16:52
Всего: 149829

Последний ответ:
19.06.2019, 16:44
Всего: 258622

Последняя рассылка:
19.06.2019, 19:45

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

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

Наша кнопка:

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

Отзывы о нас:
25.02.2012, 20:08 »
Даровко Антон Владимирович
Есть ошибка в решении, а формулы правильные. [вопрос № 185492, ответ № 270048]
26.04.2010, 14:30 »
Dimon4ik
Очень полезные ссылки. Особенно третья и последняя. Спасибо. [вопрос № 178042, ответ № 261031]

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

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

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

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

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

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

Консультация онлайн # 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
2-й класс

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.14053 сек.

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