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

larisaiventeva larisaiventeva    1   27.08.2019 07:20    0

Ответы
вита1404 вита1404  05.10.2020 22:23
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])<min then min:=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
ПОКАЗАТЬ ОТВЕТЫ
kolazykov11 kolazykov11  05.10.2020 22:23
// 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
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика