Pascal. Двумерный массив. Получить новую матрицу путем деления всех элементов данной...

0 голосов

Pascal. Двумерный массив.

Получить новую матрицу путем деления всех элементов данной матрицы на ее наименьший по модулю элемент


спросил от (15 баллов) в категории Информатика
2 Ответы
0 голосов
ответил от БОГ (150k баллов)
 
Лучший ответ
// PascalABC.NET 3.2, сборка 1415 от 25.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('Количество строк в массиве:');
  var m:=ReadInteger('Количество столбцов в массиве:');
  Writeln('*** Исходный массив [',n,',',m,'] ***');
  var a:=new real[n,m];
  for var i:=0 to n-1 do
    for var j:=0 to m-1 do
      a[i,j]:=Random(5,90);
  a.Println(3,0); Writeln;
  var p:=a.ElementsByRow.Min;
  for var i:=0 to n-1 do
    for var j:=0 to m-1 do
      a[i,j]:=a[i,j]/p;
  a.Println(7,3)
end.

Пример
Количество строк в массиве: 4
Количество столбцов в массиве: 7
*** Исходный массив [4,7] ***
 83 87 11 18 74 78 24
 45 28 59 56 14 67  5
 74 65 48 79 68 45 37
 52 70 16 82  5 51 70

 16.600 17.400  2.200  3.600 14.800 15.600  4.800
  9.000  5.600 11.800 11.200  2.800 13.400  1.000
 14.800 13.000  9.600 15.800 13.600  9.000  7.400
 10.400 14.000  3.200 16.400  1.000 10.200 14.000
оставил комментарий от (15 баллов)

Программа правильная и наиболее оптимальная аналогов, жаль нас учат не так.

оставил комментарий от (15 баллов)

Вооружится литературой по оптимизации кода Pascal?

оставил комментарий от (15 баллов)

Как нас учат:

оставил комментарий от (15 баллов)

Хорошо

0 голосов
ответил от БОГ (194k баллов)

Const n=3; m=4;
var a:array[1..n,1..m] of real;
i,j:integer; min:real;
begin
Randomize;
writeln('Исходная матрица:');
for i:=1 to n do
 begin
 for j:=1 to m do
  begin
  a[i,j]:=10*random-5;
  write(a[i,j]:6:2);
  end;
  writeln;
  end;
min:=abs(a[i,j]);
for i:=1 to n do
 for j:=1 to m do
  if abs(a[i,j])for i:=1 to n do
 for j:=1 to m do a[i,j]:=a[i,j]/min;
writeln('min = ',min:6:2);
writeln('Измененная матрица:');
for i:=1 to n do
 begin
 for j:=1 to m do write(a[i,j]:6:2);
 writeln;
end;
end.

Пример:
Исходная матрица:
 4.25 2.99 -2.67 -0.88
-0.80 3.69 -1.94 -1.18
-3.37 0.65 4.62 1.45
min = 0.65
Измененная матрица:
 6.53 4.61 -4.11 -1.36
-1.23 5.68 -2.99 -1.81
-5.19 1.00 7.10 2.23

оставил комментарий от (15 баллов)

Разве не должны присутствовать index1, index2?

оставил комментарий от БОГ (194k баллов)

Не должны.

...