В матрице A(n*n) поменять местами первый элемент с наименьшим диагональным...

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

В матрице A(n*n) поменять местами первый элемент с наименьшим диагональным элементом.
паскаль


Информатика (69 баллов) | 122 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
PascalABC.NET 3.3.5, сборка 1640 от 17.03.2018
Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('Количество строк/столбцов в матрице:');
  Writeln('*** Исходная матрица ***');
  var a:=MatrRandom(n,n,-99,99);
  a.Println(4); Writeln(4*a.ColCount*'-');
  var k:=Range(0,n-1).Select(i->a[i,i]).ToArray.IndexMin;
  Swap(a[0,0],a[k,k]);
  Writeln('*** Результат ***');
  a.Println(4)
end.

Пример
Количество строк/столбцов в матрице: 5
*** Исходная матрица ***
 -54   0  45  24  72
 -90  46  54  46  50
 -51  85 -76 -64 -27
 -14 -33 -66   2  71
  43 -92  77  58 -22
--------------------
*** Результат ***
 -76   0  45  24  72
 -90  46  54  46  50
 -51  85 -54 -64 -27
 -14 -33 -66   2  71
  43 -92  77  58 -22
(150k баллов)
0 голосов

// PascalABC.NET 3.3

begin
 var n:=ReadInteger('n =');
 var a:=MatrRandom(n,n,-10,10).Println(5);
 var i:=a.ElementsWithIndexes.Where(k->k[2]=k[1]).
      Select(k->k[0]).ToArray.IndexMin;
 Swap(a[0,0],a[i,i]);
 writeln('* * * * * * *');
 a.Println(5);
end.

Пример:
n = 4
    7    9   -7   -2
    5    9   -5    5
    1    7    2    4
   -6    0   -4    7
* * * * * * *
    2    9   -7   -2
    5    9   -5    5
    1    7    7    4
   -6    0   -4    7

(194k баллов)