Оглавление:
Задача — Суммы строк и столбцов матрицы
— программирование на Pascal, Си, Кумир, Basic-256, Python
Посчитать суммы каждой строки и каждого столбца матрицы. Вывести суммы строк в конце каждой строки, а суммы столбцов под соответствующими столбцами.
Поскольку двумерный массив обычно перебирается построчно, то сумму строк считать проще. Можно, заполняя строку матрицы и выводя ее элементы на экран, накапливать в переменной сумму элементов строки и выводить ее в конце строки.
Для сумм столбцов можно предусмотреть отдельный массив, в ячейках которого накапливать сумму каждого столбца. При построчном проходе по матрице, каждый новый элемент следует суммировать с соответствующим ему элементом массива сумм столбцов. Индекс элемента в строке матрицы будет совпадать с индексом элемента в массиве сумм.
Выводить суммы столбцов следует в отдельном цикле.
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
Язык Си
#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
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