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

0 голосов
49 просмотров

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

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


Информатика (15 баллов) | 49 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// 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
(150k баллов)
0

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

0

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

0

Как нас учат:

0

Хорошо

0 голосов

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

(194k баллов)
0

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

0

Не должны.