Напишите программу, которая выводит ** экран строку матрицы, сумма значений элементов...

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

Напишите программу, которая выводит на экран строку матрицы, сумма значений элементов которой наибольшая (Pascal)


Информатика (54 баллов) | 241 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
1. Современное решение

// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('Количество строк в матрице:');
  var m:=ReadInteger('Количество столбцов в матрице:');
  Writeln('*** Исходная матрица [',n,',',m,'] ***');
  var a:=MatrRandom(n,m,-99,99);
  a.Println(4); Writeln(4*a.ColCount*'-');
  Writeln('Строка с наибольшей суммой:');
  a.Row(a.Rows.Select(r->r.Sum).ToArray.IndexMax).Println
end.

Пример
Количество строк в матрице: 6
Количество столбцов в матрице: 9
*** Исходная матрица [6,9] ***
  54 -83  45 -44 -52  57 -90 -71 -70
   8  99 -27  72  46  28 -18  36  48
 -85  24 -57 -67  63 -69  52  44 -99
 -34 -44  -1  45  48  63  68  48  98
  27  84  15  70  37 -70   1  24 -60
 -82 -63   6 -59  91 -64  84  65  66
------------------------------------
Строка с наибольшей суммой:
8 99 -27 72 46 28 -18 36 48

2. Школьное решение в стиле языка ТурбоПаскаль 1983г

const
  nn=20;
var
  i,j,n,m,k,s,max:integer;
  a:array[1..nn,1..nn] of integer;
begin
  Write('Количество строк в матрице: '); Read(n);
  Write('Количество столбцов в матрице :'); Read(m);
  Writeln('*** Исходная матрица [',n,',',m,'] ***');
  Randomize;
  max:=-100;
  for i:=1 to n do begin
    s:=0;
    for j:=1 to m do begin
      a[i,j]:=Random(199)-99;
      Write(a[i,j]:4);
      s:=s+a[i,j]
      end;
    Writeln;
    if s>max then begin
      max:=s; k:=i
      end
    end;
  for i:=1 to 4*n do Write('-');
  Writeln;
  Writeln('Строка с наибольшей суммой:');
  for j:=1 to m do Write(a[k,j],' ');
  Writeln
end.
(150k баллов)
0 голосов

Const
   N = 3;
   M = 4;
Var
   A:array[1..N,1..M] of integer;
   i,j,iMax:integer;
   S,Max:real;
Begin
Randomize;
WriteLn('Исходная матрица:');
For i:= 1 to N do
    Begin
    For j:= 1 to M do
        Begin
        A[i,j]:=random(21)-10;
        Write(A[i,j]:3,' ');
        End;
    WriteLn
    End;
Max:=0;
iMax:=1;
For j:= 1 to M do
    Max:=Max+A[1,j];
For i:= 2 to N do
    Begin
    For j:= 1 to M do
        S:=S+A[i,j];
    if S>Max then
       Begin
       Max:=S;
       iMax:=i;
       End;
    End;
Write('Искомая строка:');
For j:= 1 to M do
    Write(' ',A[iMax,j])
End.



Пример работы программы:

Исходная матрица:
  8   0  -7  -1
 -2 -10  -4 -10
  5  -1  10  -6
Искомая строка: 8 0 -7 -1

(34.0k баллов)