Как найти сумму элементов в каждой строке

Есть массив:

int[][] array = new int[2][3];
array[0][0] = 1;
array[0][1] = 2;
array[1][0] = 3;
array[1][1] = 4;
array[0][2] = 5;
array[1][2] = 6;  

Используя цикл for, вычислите сумму каждой строки первого массива и запишите результат в новый массив.

Можете помочь кодом для новичка, т.е простое решение предложить?

Kromster's user avatar

Kromster

13.5k12 золотых знаков43 серебряных знака72 бронзовых знака

задан 15 июл 2018 в 13:43

Anastasia's user avatar

2

Если легкий вариант и не использую Stream API, то вам подойдет такой вариант:

public class Application {

    public static void main(String[] args) {
        int[][] array = new int[2][3];
        array[0][0] = 1;
        array[0][1] = 2;
        array[1][0] = 3;
        array[1][1] = 4;
        array[0][2] = 5;
        array[1][2] = 6;
        int[] newArray = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                newArray[i] += array[i][j];
            }
        }
        Arrays.stream(newArray).forEach(System.out::println);
    }

}

ответ дан 15 июл 2018 в 14:17

Andrii Torzhkov's user avatar

3

Вот например мы заполняем массив, так же и складывайте элементы массива.
Вот пример заполнения и вывода.

    package array;

/**
 *
 * @author vvm
 */
public class ArrayCount {

    public static void main(String[] args) {
        int[][] array = new int[2][3];
        for (int i = 0; i < 2; i++) {

            for (int j = 0; j < 3; j++) {
                array[i][j] = i+1;

            }
        }
        for (int i = 0; i < 2; i++) {
            System.out.println("");
            for (int j = 0; j < 3; j++) {
                System.out.print(" array[" + i + "]" + "[" + j + "]" + " = " + array[i][j]);
            }
        }
    }
}

array[i][j] — это ваш элемент массива, то что хранится в ячейке массива с номером ячейки [i][j]. Как в табличке. Только это условно. В памяти компьютера массив хранится по другому. Строки и столбцы — это условность.

ответ дан 15 июл 2018 в 15:20

Vyacheslav Mishchenko's user avatar

попробуйте так

    int rowsCount = array[0].length;
    for(int row = 0; row < rowsCount; row++)
    {
        int sum = 0;
        for(int i = 0; i < array.length; i++)
        {
            int cell = array[i][row];
            sum += cell;
            // debug (remove next line if not needed!)
            System.out.print(cell + (i < array.length - 1 ? " + " : " = "));
        }

        System.out.println(sum);
    }

ответ дан 16 июл 2018 в 6:49

Ramiz's user avatar

RamizRamiz

1,6049 серебряных знаков16 бронзовых знаков

Можно проще сделать с помощью stream:

int[][] array = new int[2][3];
array[0] = new int[]{1, 2, 5};
array[1] = new int[]{3, 4, 6};

int[] sums = Arrays.stream(array)
        // получаем сумму каждой строки
        .mapToInt(row -> Arrays.stream(row).sum())
        // возвращаем массив
        .toArray();

System.out.println(Arrays.toString(sums)); // [8, 13]

ответ дан 10 дек 2020 в 21:35

program
sumstr;

Var
a: array[1..50,1..50] of integer;

i,
j, n, m,sum: integer;

Begin

Write(‘сколько
строк?’); Readln(m);

Write(‘сколько
столбцов?’); Readln(n);

For
i:=1 to m do

begin

For
j:=1 to n do

begin

a[i,j]:=int(rnd*50)-19;
write(a[i,j],’ ‘);

end;

writeln;

end;

for
i:=1 to m do

begin

sum:=0;

for
j:=1 to n do sum:=sum+a[i,j];

writeln(‘сумма
элементов в ‘,i,’ строке: ‘,sum);

end;

end.

6. Подсчитать количество положительных элементов в каждой строке матрицы размером МхN, элементы которой вводятся с клавиатуры.

program
kolpolvstr;

Var
a: array[1..50,1..50] of integer;

i,
j, m, n, kol: integer;

Begin

Write(‘сколько
строк?’); Readln(m);

Write(‘сколько
столбцов?’); Readln(n);

For
i:=1 to m do

begin

For
j:=1 to n do

begin
write(‘a[‘,i,’,’,j,’]=’); readln (a[i,j]); end;

for
i:=1 to m do

begin

kol:=0;

for
j:=1 to n do if a[i,j]>0 then kol:=kol+1;

writeln(‘количество
положительных элементов в ‘,i,’ строке:
‘,kol);

end;

writeln;

end;

end.

7. Сформировать матрицу типа 1 0 0 0

0
1 0 0

0
0 1 0

0
0 0 1

program
formir;

Var
a: array[1..50,1..50] of integer;

i,
j, m, n: integer;

Begin

Write(‘сколько
строк?’); Readln(m);

Write(‘сколько
столбцов?’); Readln(n);

For
i:=1 to m do

begin

For
j:=1 to n do

begin

if
i=j then a[i,j]:=1 else a[i,j]:=0;

write(a[i,j]);

end;

writeln;

End.

8.
Найти номер столбца массива размером
МхN, в котором находится наибольшее
количество отрицательных элементов.
Элементы вводятся с клавиатуры.

program
nomerstolb;

Var
a: array[1..50,1..50] of integer;

b:
array[1..50] of integer;

i,
j, m, n, max, jmax: integer;

Begin

Write(‘сколько
строк?’); Readln(m);

Write(‘сколько
столбцов?’); Readln(n);

For
i:=1 to m do

begin

For
j:=1 to n do

begin

write(‘a[‘,i,’,’,j,’]=’);
readln (a[i,j]);

end;

for
j:=1 to m do

begin

b[j]:=0;

for
i:=1 to n do

if
a[i,j]<0 then b[j]:=b[j]+1;

end;

max:=b[1];
jmax:=1;

For
j:=2 to n do

begin

if
b[j]>max then

begin

max:=b[j];
jmax:=j;

end;

end;

writeln(‘Наибольшее
количество отрицательных элементов в
‘;jmax ; ‘столбце’);

end;

end.

9. Упорядочить каждый столбец матрицы по возрастанию. Массив размером МхN, элементы которого задаются датчиком случайных чисел на интервале [-17;26].

program
porydok;

Var
a: array[1..50,1..50] of integer;

i,
j, n, m,t,r: integer;

Begin

Write(‘сколько
строк?’); Readln(m);

Write(‘сколько
столбцов?’); Readln(n);

For
i:=1 to m do

begin

For
j:=1 to n do

begin

a[i,j]:=int(rnd*44)-17;

write(a[i,j],’
‘);

end;

Writeln;

end;

For
j:=1 to n do

For
r:=1 to m do

For
i:=1 to m-1 do

if
a[i,j]> a[i+1,j] then

begin

t:=
a[i,j];

a[i,j]:=
a[i+1,j];

a[i+1,j]:=
t;

end;

For
i:=1 to m do

begin

For
j:=1 to n do write(a[i,j],’ ‘);

Writln;

end;

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given a matrix of order m×n, the task is to find out the sum of each row and each column of a matrix.

    Examples: 

    Input: array[4][4] = { {1, 1, 1, 1}, 
                           {2, 2, 2, 2}, 
                           {3, 3, 3, 3}, 
                           {4, 4, 4, 4}};
    Output: Sum of the 0 row is = 4
            Sum of the 1 row is = 8
            Sum of the 2 row is = 12
            Sum of the 3 row is = 16
            Sum of the 0 column is = 10
            Sum of the 1 column is = 10
            Sum of the 2 column is = 10
            Sum of the 3 column is = 10

    Approach:  

    The sum of each row and each column can be calculated by traversing through the matrix and adding up the elements.

    Below is the implementation of the above approach:  

    C++

    #include <iostream>

    using namespace std;

    #define m 4

    #define n 4

    void row_sum(int arr[m][n])

    {

        int i,j,sum = 0;

        cout << "nFinding Sum of each row:nn";

        for (i = 0; i < m; ++i) {

            for (j = 0; j < n; ++j) {

                sum = sum + arr[i][j];

            }

            cout

                << "Sum of the row "

                << i << " = " << sum

                << endl;

            sum = 0;

        }

    }

    void column_sum(int arr[m][n])

    {

        int i,j,sum = 0;

        cout << "nFinding Sum of each column:nn";

        for (i = 0; i < m; ++i) {

            for (j = 0; j < n; ++j) {

                sum = sum + arr[j][i];

            }

            cout

                << "Sum of the column "

                << i << " = " << sum

                << endl;

            sum = 0;

        }

    }

    int main()

    {

        int i,j;

        int arr[m][n];

        int x = 1;

        for (i = 0; i < m; i++)

            for (j = 0; j < n; j++)

                arr[i][j] = x++;

        row_sum(arr);

        column_sum(arr);

        return 0;

    }

    Java

    import java.io.*;

    class GFG {

        static int m = 4;

        static int n = 4;

        static void row_sum(int arr[][])

        {

            int i, j, sum = 0;

            System.out.print("nFinding Sum of each row:nn");

            for (i = 0; i < m; ++i) {

                for (j = 0; j < n; ++j) {

                    sum = sum + arr[i][j];

                }

                System.out.println("Sum of the row " + i + " = "

                                   + sum);

                sum = 0;

            }

        }

        static void column_sum(int arr[][])

        {

            int i, j, sum = 0;

            System.out.print(

                "nFinding Sum of each column:nn");

            for (i = 0; i < m; ++i) {

                for (j = 0; j < n; ++j) {

                    sum = sum + arr[j][i];

                }

                System.out.println("Sum of the column " + i

                                   + " = " + sum);

                sum = 0;

            }

        }

        public static void main(String[] args)

        {

            int i, j;

            int[][] arr = new int[m][n];

            int x = 1;

            for (i = 0; i < m; i++)

                for (j = 0; j < n; j++)

                    arr[i][j] = x++;

            row_sum(arr);

            column_sum(arr);

        }

    }

    Python 3

    import numpy as np

    m , n = 4, 4       

    def row_sum(arr) :

        sum = 0

        print("nFinding Sum of each row:n")

        for i in range(m) :

            for j in range(n) :

                sum += arr[i][j]

            print("Sum of the row",i,"=",sum)

            sum = 0

    def column_sum(arr) :

        sum = 0

        print("nFinding Sum of each column:n")

        for i in range(m) :

            for j in range(n) :

                sum += arr[j][i]

            print("Sum of the column",i,"=",sum)

            sum = 0

    if __name__ == "__main__" :

        arr = np.zeros((4, 4))

        x = 1

        for i in range(m) :

            for j in range(n) :

                arr[i][j] = x

                x += 1

        row_sum(arr)

        column_sum(arr)

    C#

    using System;

    class GFG {

        static int m = 4;

        static int n = 4;

        static void row_sum(int[, ] arr)

        {

            int i, j, sum = 0;

            Console.Write("nFinding Sum of each row:nn");

            for (i = 0; i < m; ++i) {

                for (j = 0; j < n; ++j) {

                    sum = sum + arr[i, j];

                }

                Console.WriteLine("Sum of the row " + i + " = "

                                  + sum);

                sum = 0;

            }

        }

        static void column_sum(int[, ] arr)

        {

            int i, j, sum = 0;

            Console.Write("nFinding Sum of each"

                          + " column:nn");

            for (i = 0; i < m; ++i) {

                for (j = 0; j < n; ++j) {

                    sum = sum + arr[j, i];

                }

                Console.WriteLine("Sum of the column " + i

                                  + " = " + sum);

                sum = 0;

            }

        }

        public static void Main()

        {

            int i, j;

            int[, ] arr = new int[m, n];

            int x = 1;

            for (i = 0; i < m; i++)

                for (j = 0; j < n; j++)

                    arr[i, j] = x++;

            row_sum(arr);

            column_sum(arr);

        }

    }

    PHP

    <?php

    $m = 4;

    $n = 4;

    function row_sum(&$arr)

    {

        $sum = 0;

        echo "Finding Sum of each row:nn";

        for ($i = 0; $i < m; ++$i)

        {

            for ($j = 0; $j < n; ++$j)

            {

                $sum = $sum + $arr[$i][$j];

            }

            echo "Sum of the row " . $i .

                 " = " . $sum . "n";

            $sum = 0;

        }

    }

    function column_sum(&$arr)

    {

        $sum = 0;

        echo "nFinding Sum of each column:nn";

        for ($i = 0; $i < m; ++$i)

        {

            for ($j = 0; $j < n; ++$j)

            {

                $sum = $sum + $arr[$j][$i];

            }

            echo "Sum of the column " . $i .

                        " = " . $sum . "n";

            $sum = 0;

        }

    }

    $arr = array_fill(0, $m, array_fill(0, $n, NULL));

    $x = 1;

    for ($i = 0; $i < $m; $i++)

        for ($j = 0; $j < $n; $j++)

            $arr[$i][$j] = $x++;

    row_sum($arr);

    column_sum($arr);

    ?>

    Javascript

    <script>

    var m= 4;

    var n= 4;

    function row_sum( arr)

    {

        var i,j,sum = 0;

        document.write("<br>"+ "nFinding Sum of each row:"+"<br>");

        for (i = 0; i < m; ++i) {

            for (j = 0; j < n; ++j) {

                sum = sum + arr[i][j];

            }

            document.write( "Sum of the row "

                + i + " = " + sum

                +"<br>");

            sum = 0;

        }

    }

    function column_sum(arr)

    {

        var i,j,sum = 0;

        document.write( "<br>"+"Finding Sum of each column:"+"<br>");

        for (i = 0; i < m; ++i) {

            for (j = 0; j < n; ++j) {

                sum = sum + arr[j][i];

            }

            document.write( "Sum of the column "

                + i +" = " + sum

                +"<br>");

            sum = 0;

        }

    }

        var i,j;

        var arr=new Array(m).fill(0);

        for(var k=0;k<m;k++)

        {

            arr[k]=new Array(n).fill(0);

        }

        var x = 1;

        for (i = 0; i < m; i++)

            for (j = 0; j < n; j++)

                arr[i][j]=  x++;

        row_sum(arr);

        column_sum(arr);

    </script>

    Output

    Finding Sum of each row:
    
    Sum of the row 0 = 10
    Sum of the row 1 = 26
    Sum of the row 2 = 42
    Sum of the row 3 = 58
    
    Finding Sum of each column:
    
    Sum of the column 0 = 28
    Sum of the column 1 = 32
    Sum of the column 2 = 36
    Sum of the column 3 = 40
    

    Complexity Analysis:

    • Time Complexity: O(N*M), as we are using nested loops for traversing the matrix.
    • Auxiliary Space: O(1), as we are not using any extra space.

    Last Updated :
    06 Sep, 2022

    Like Article

    Save Article

    Перейти к содержанию

    Суммы строк и столбцов матрицы

    Просмотров 10.7к. Обновлено 15 октября 2021

    Посчитать суммы каждой строки и каждого столбца матрицы. Вывести суммы строк в конце каждой строки, а суммы столбцов под соответствующими столбцами.

    Поскольку двумерный массив обычно перебирается построчно, то сумму строк считать проще. Можно, заполняя строку матрицы и выводя ее элементы на экран, накапливать в переменной сумму элементов строки и выводить ее в конце строки.

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

    Выводить суммы столбцов следует в отдельном цикле.

    Pascal


    const
    M = 10;
    N = 5;
    var
    a: array[1..N,1..M] of integer;
    i, j: byte;
    s: integer;
    sc: array[1..M] of integer;
    begin
    for i:= 1 to M do
    sc[i] := 0;

    for i:=1 to N do begin
    s := 0;
    for j:=1 to M do begin
    a[i,j] := random(10);
    write(a[i,j]:6);
    s := s + a[i,j];
    sc[j] := sc[j] + a[i,j]
    end;
    writeln (' |', s);
    end;
    for i:= 1 to M do
    write('--':6);
    writeln;
    for i:= 1 to M do
    write(sc[i]:6);
    writeln;

    end.



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

    5 5 7 8 6 8 5 8 4 6 |62
    6 3 4 2 8 0 9 2 3 4 |41
    7 8 5 4 5 3 9 8 0 3 |52
    0 6 0 3 8 9 7 1 8 8 |50
    9 4 7 8 4 5 7 6 1 7 |58
    -- -- -- -- -- -- -- -- -- --
    27 26 23 25 31 25 37 25 16 28

    Язык Си

    сумма элементов каждого столбца матрицы c++


    #include < stdio.h>
    #define M 10
    #define N 5
    main() {
    int a[N][M];
    int sc[M];
    int s, i, j;
    srand(time(NULL));
    for (i=0; i< M; i++) sc[i] = 0;
    for (i=0; i< N; i++) {
    s = 0;
    for (j=0; j< M; j++) {
    a[i][j] = rand() % 10;
    printf("%5d", a[i][j]);
    s += a[i][j];
    sc[j] += a[i][j];
    }
    printf(" |%dn", s);
    }
    for (i=0; i< M; i++)
    printf("%5s", "--");
    printf("n");
    for (i=0; i< M; i++)
    printf("%5d", sc[i]);
    printf("n");
    }

    Python

    сумма элементов строки матрицы python (питон)


    from random import random
    M = 10
    N = 5
    a = []
    for i in range(N):
    b = []
    for j in range(M):
    b.append(int(random()*11))
    print("%3d" % b[j], end='')
    a.append(b)
    print(' |', sum(b))

    for i in range(M):
    print(" --", end='')
    print()

    for i in range(M):
    s = 0
    for j in range(N):
    s += a[j][i]
    print("%3d" % s, end='')
    print()



    Пример(ы) выполнения программы на языке Python:

    6 7 3 10 10 10 4 2 6 5 | 63
    2 8 0 9 0 4 9 3 6 3 | 44
    5 3 1 10 5 6 5 2 0 9 | 46
    10 9 10 8 7 8 5 2 10 9 | 78
    3 3 6 0 4 1 6 10 10 3 | 46
    -- -- -- -- -- -- -- -- -- --
    26 30 20 37 26 29 29 19 32 29
    В Python используется немного иной алгоритм решения задачи. Сначала создается пустой список - будущая матрица. Далее в цикле в нее добавляются вложенные списки.

    Суммы строк матрицы вычисляются с помощью функции sum(), которой передается текущий список-строка цикла.

    Суммы столбцов вычисляются путем прохода по каждому столбу матрицы. Обратите внимание, что здесь наоборот: внешний цикл - проход по столбцам, внутренний - по строкам.

    КуМир


    алг суммы строк столбцов
    нач
    цел M = 10, N = 5
    цел таб a[1:N,1:M], sc[1:M]
    цел i, j, s
    нц для i от 1 до M
    sc[i] := 0
    кц

    нц для i от 1 до N
    s := 0
    нц для j от 1 до M
    a[i,j] := int(rand(0,10))
    вывод a[i,j], " "
    s := s + a[i,j]
    sc[j] := sc[j] + a[i,j]
    кц
    вывод " |", s, нс
    кц

    нц для i от 1 до M
    вывод "---"
    кц
    вывод нс
    нц для i от 1 до M
    вывод sc[i], " "
    кц
    кон

    Basic-256


    M = 10
    N = 5
    dim a(N,M)
    dim sc(M)
    for i = 0 to N-1
    s = 0
    for j=0 to M-1
    a[i,j] = int(rand*10)
    print a[i,j] + " ";
    s = s + a[i,j]
    sc[j] = sc[j] + a[i,j]
    next j
    print " |" + s
    next i

    for i=0 to M-1
    print "-- ";
    next i
    print
    for i=0 to M-1
    print sc[i] + " ";
    next i
    print

    <u>PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018</u>
    <u>Внимание! Если программа не работает, обновите версию!</u>

    begin
      var (m,n):=ReadInteger2(‘Количество строк и столбцов в массиве:’);
      Writeln(‘*** Исходный массив ***’);
      var a:=MatrRandom(m,n,-99,99);
      a.Println(4); Writeln(4*a.ColCount*’-‘);
      Writeln(‘Суммы по строкам’);
      a.Rows.Select(row->row.Sum).Println;
      Writeln(‘Произведения по столбцам’);
      a.Cols.Select(col->col.Aggregate(BigInteger(1),(p,q)->p*q)).Println
    end.

    <u>Пример</u>
    Количество строк и столбцов в массиве: 5 4
    *** Исходный массив ***
     -99 -70  -9 -24
      87 -34  66  -5
      92 -65  -9 -51
      61  99  79  17
     -40  22  75  88
    —————-
    Суммы по строкам
    -202 114 -33 256 145
    Произведения по столбцам
    1933446240 -336936600 31675050 -9155520

    Понравилась статья? Поделить с друзьями:
  • Как исправить течь на трубе отопления
  • Как найти платеж за штраф
  • Как найти катет в прямом равнобедренном треугольнике
  • Как найти на кого оформлен дом
  • Как найти hklm system currentcontrolset