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

0 / 0 / 0

Регистрация: 30.05.2017

Сообщений: 11

1

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

31.05.2017, 20:58. Показов 44948. Ответов 2


Студворк — интернет-сервис помощи студентам

Дан двумерный массив. Найти сумму элементов каждого столбца. Плз, нужен весь код на языке С++.



0



Fixer_84

1505 / 968 / 812

Регистрация: 30.04.2016

Сообщений: 3,334

31.05.2017, 21:16

2

Лучший ответ Сообщение было отмечено madiyerzh как решение

Решение

madiyerzh, здравствуйте! Вот ваша программа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <windows.h> //Шрифт консоли - Lucida Console
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int N, M, sum;
    cout << "Введите размеры массива:" << endl;
    cout << "N = ";
    cin >> N;
    cout << "M = ";
    cin >> M;
    int** A = new int*[N];
    for (int i = 0; i < N; i++)
    {
        A[i] = new int[M];
    }
    cout << "Введите массив:" << endl;
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            cin >> A[i][j];
        }
    }
    cout << "Искомые суммы в столбцах:" << endl;
    for (int j = 0; j < M; j++)
    {
        sum = 0;
        for (int i = 0; i < N; i++)
        {
            sum += A[i][j];
        }
        cout << "Cтолбец #" << j + 1 << ": " << sum << endl;
    }
    for (int i = 0; i < N; i++)
    {
        delete [] A[i];
    }
    delete [] A;
    system("pause");
    return 0;
}



2



Модератор

Эксперт С++

13085 / 10362 / 6201

Регистрация: 18.12.2011

Сообщений: 27,713

31.05.2017, 21:23

3



0



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

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

Просмотров 10.6к. Обновлено 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

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
        srand(time(NULL));
        int M = 0, N = 0, i;
        
        printf("Введите число M в десятичной системе считсления: ");
        scanf("%d", &M);
        
        printf("Введите число N в десятичной системе считсления: ");
        scanf("%d", &N);
        
        if(M > 13 || M == 0) { printf("Число М имеет неверное значениеn"); system("pause"); return -1; }
        if(N >  M || N == 0) { printf("Число N имеет неверное значениеn"); system("pause"); return -1; }
        
        // Создание динамического двумерного массива
        // Сначала выделяется память под N указателей
        // Затем в цикле каждому указателю вектор размером M
    int **B = (int**)malloc(N*sizeof(int*));
    for ( i = 0; i < N; i++)
        B[i] = (int*)malloc(M*sizeof(int));
 
        // Заполнение матрицы случайными значениями
    for ( i = 0; i < N; i++)
        for (int j = 0; j < M; j++)
            B[i][j] = rand()%10;
 
        // Вывод матрицы
        printf("Исходная матрицаn");
        for ( i = 0; i < N; i++)
        {
                for (int j = 0; j < M; j++)
                        printf("%dt", B[i][j]);
                printf("n");
        }
        
        // Выделяем память под массив 
        int * D = (int*)malloc(M*sizeof(int));
        // Подсчет суммы и одновременный вывод
        printf("nПодсчет суммn");
        for( i = 0; i < M; i++)
        {
                D[i] = 0;
                for(int j = 0; j < N; j++)
                {
                        D[i] += B[j][i];
                }
                printf("%d столбец: %dn", (i+1), D[i]);
        }               
        // Освобождаем выделенную память
        free(D);
 
        // Освобождение выделенной памяти
        // Для каждого malloc свой free!
    for ( i = 0; i != N; ++i)
        free(B[i]);   
    free(B);
 
        system("pause");
        return 0;
}

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

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

    Program pr2;

    CONST N=3;

    TYPE MAS=array [1..N,1..N]
    of real;

    Var a: MAS;

    i: 1..3;

    j : 1..3;

    s:real;

    BEGIN

    Writeln(‘Введите
    элементы массива’);

    For i:=1 to n do

    For j:=1 to n do

    Readln(a[i,j]);

    {Вывод значений
    массива}

    For i:=1 to n do

    begin

    For j:=1 to n do

    Write
    (a[i,j]:5:1);

    Writeln;

    end;

    s:=0; j=1;

    For i:=1 to n do

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

    Writeln(‘Сумма
    элементов
    первого
    столбца
    = ’,s:5:2);

    end.

    5.Вычисление суммы элементов всего двумерного массива.

    ……

    S:=0;

    for i:=1 to m do

    for j:=0 to n do

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

    ………….

    6. Задача поиска максимального (минимального) элемента и его индексов.

    Ищем максимальный
    элемент каждой строки :

    For i:=0 to m do

    begin

    max:=a[i,1];

    ind_L:=i;
    {сохраняем номер строки}

    ind_C:=1;
    {заносим номер 1 – первый столбец}

    for
    j:=1 to n do

    if a[i,j]>max then
    begin

    max:=a[i,j];

    ind_C:=j
    {сохраняем
    номер
    j-ого
    столбца}

    end;

    writeln(‘max
    строки
    ’,i,’=’,max)

    end;

    Ищем минимальный
    элемент каждого столбца :

    For
    j:=0
    to
    n
    do
    { перемещаемся по столбцу}

    begin

    min:=a[1,j];

    ind_L:=1;
    {сохраняем номер строки}

    ind_C:=j;
    {сохраняем номер столбца}

    for
    i:=1 to m do

    if a[i,j]<min then
    begin

    min:=a[i,j];

    ind_L:=i
    {сохраняем
    номер
    j-ой
    строки}

    end;

    writeln(‘min
    ‘,j,’ столбца’,min)

    end;

    7. Алгоритм поиска минимального элемента и его индексов для всего массива.

    Min:=a[1,1];

    ind_L:=1;

    ind_C:=1;

    for i:=1 to m do

    for j:=1 to n do

    if a[i,j]<min then
    begin

    min:=a[i,j];
    ind_L:=i; ind_C:=j;

    end;

    8. Квадратные матрицы.

    Type mas4x4=array[1..4,1..4]
    of integer;

    var a: mas4x4;

    a11

    a12

    a13

    a14

    a21

    a22

    a23

    a24

    a31

    a32

    a33

    a34

    a41

    a42

    a43

    a44

    Главная диагональ –

    элементы a11,
    a22,
    a33,
    a44
    (индексы элементов, расположенных на
    главной диагонали (i=j)

    Побочная диагональ
    – элементы
    a41,
    a32,
    a23,
    a14
    (сумма индексов элементов на 1 больше
    размерности строки (или столбца), т.е.
    i+j=4=1
    или i+j=n+1.
    На рисунке главная диагональ закрашена
    сплошным серым цветом, побочная – черным.

    a12

    a13

    a14

    a23

    a24

    a34

    Элементы,
    расположенные над главной диагональю,
    Для индексов элементов, расположенных
    над главной диагональю выполняется
    отношение
    i<j;

    a21

    a31

    a32

    a41

    a42

    a43

    Элементы,
    расположенные под главной диагональю,
    Для индексов элементов, расположенных
    под главной диагональю выполняется
    отношение
    i>j;

    Примеры :

    1) Найти
    сумму элементов главной диагонали:

    S:=0;

    for i:=1 to n do

    S:=S+a[i,i];

    2) Найти
    минимальный элемент побочной диагонали:

    min:=a[1,n];

    for i:=1 to n do

    if a[i,n+1-i]<min then
    min:=a[i,n+1-i];

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

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

    Добавить комментарий