Суммы элементов строк матрицы

Задача

Вариант 1. Найти сумму элементов каждой строки матрицы (двумерного массива).

Вариант 2. Вычислить сумму элементов определенной строки матрицы.

Решение

Если поставлена задача вычислить сумму элементов каждой строки матрицы, то алгоритм ее выполнения таков:

  1. По-строчно перебираем элементы матрицы (внешний цикл отвечает за переход к новой строке, счетчик - первый индекс элементов).
  2. Во внешнем цикле перед внутренним присваиваем переменной для суммы значение 0. В ней будет накапливаться сумма элементов текущей строки, элементы которой перебираются во внутреннем цикле.
  3. После внутреннего цикла выводим значение переменной-суммы на экран.

Ниже в примере решения данной задачи заполнение матрицы, вывод элементов на экран и подсчет суммы выполняются внутри одного цикла. Это сделано не только для сокращения кода программы, но и для красивого вывода. После того, как выводятся элементы очередной строки, в конце этой же строки выводится их сумма.

const
    M = 7;
    N = 5;
var
    mat: array[1..N,1..M] of real;
    i, j: byte;
    sum: real;
begin 
    for i:=1 to N do begin
        sum := 0;
        for j:=1 to M do begin
            mat[i,j] := random();
            write(mat[i,j]:6:2);
            sum := sum + mat[i,j];
        end;
        writeln ('|', sum:6:2);
    end; 
end.

Пример выполнения:

  0.55  0.59  0.72  0.84  0.60  0.86  0.54|  4.71
 
  0.85  0.42  0.62  0.65  0.38  0.44  0.30|  3.66
 
  0.89  0.06  0.96  0.27  0.38  0.48  0.79|  3.84
 
  0.81  0.53  0.48  0.57  0.39  0.93  0.84|  4.54
 
  0.07  0.34  0.09  0.65  0.02  0.37  0.83|  2.36

Если поставлена задача нахождения суммы элементов только определенной строки матрицы, то в решении используется только один цикл (без вложенного). Перебираются только элементы указанной строки. При этом меняется значение только второго индекса, а первый всегда постоянен - это номер строки.

Программа ниже усложнена тем, что пользователь сам определяет номер строки матрицы, элементы которой необходимо просуммировать. Если поставлена задача, в которой конкретно задается строка, то вместо переменной num следует использовать число, обозначающее номер строки. Например, для третьей строки выражение sum := sum + mat[num,j] следует заменить на sum := sum + mat[3,j].

const
    M = 7;
    N = 5;
var
    mat: array[1..N,1..M] of real;
    i, j: byte;
    sum: real;
    num: byte;
begin 
    for i:=1 to N do begin // только заполняем и выводим матрицу
        for j:=1 to M do begin
            mat[i,j] := random();
            write(mat[i,j]:6:2);
        end;
        writeln;
    end; 
    write('Введите номер строки: ');
    readln(num);
    sum := 0;
    for j:=1 to M do // считаем сумму элементов заданной строки
        sum := sum + mat[num,j];
    writeln('Сумма ее элементов: ', sum:6:2);
end.

Пример выполнения:

  0.55  0.59  0.72  0.84  0.60  0.86  0.54
 
  0.85  0.42  0.62  0.65  0.38  0.44  0.30
 
  0.89  0.06  0.96  0.27  0.38  0.48  0.79
 
  0.81  0.53  0.48  0.57  0.39  0.93  0.84
 
  0.07  0.34  0.09  0.65  0.02  0.37  0.83
 
Введите номер строки: 2
 
Сумма ее элементов:   3.66

Тема

Матрицы

Уровень

Комбинированные задачи

Последняя редакция