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, здравствуйте! Вот ваша программа:
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 ifor i=0 to M-1
print "-- ";
next i
for i=0 to M-1
print sc[i] + " ";
next i
#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
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];
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #