Вычислить сумму и число положительных элементов матрицы A[N, N]
Задание: Вычислить сумму и число положительных элементов матрицы A[N, N], находящихся над главной диагональю.
Я сделал код, правда только не совсем работает так: Вывод положительных чисел не может убрать отрицательные (т.е. например: 2 3 4 5 -1, а вывод получается: 5, хотя должно быть 4). Также правильно ли я сделал с суммой, если я сделал с рандомным значением (Выводит при вводе 2 1 2 3 4: 48, потом 52, 37 и т.д.)? Заранее благодарю.
Суммы строк и столбцов матрицы
Посчитать суммы каждой строки и каждого столбца матрицы. Вывести суммы строк в конце каждой строки, а суммы столбцов под соответствующими столбцами.
Поскольку двумерный массив обычно перебирается построчно, то сумму строк считать проще. Можно, заполняя строку матрицы и выводя ее элементы на экран, накапливать в переменной сумму элементов строки и выводить ее в конце строки.
Для сумм столбцов можно предусмотреть отдельный массив, в ячейках которого накапливать сумму каждого столбца. При построчном проходе по матрице, каждый новый элемент следует суммировать с соответствующим ему элементом массива сумм столбцов. Индекс элемента в строке матрицы будет совпадать с индексом элемента в массиве сумм.
Выводить суммы столбцов следует в отдельном цикле.
Pascal
Язык Си
Python
сумма элементов строки матрицы python (питон)
КуМир
Basic-256
- Total 1
- 0
- 0
- 0
- 1
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;
Пример выполнения программы:
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
#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
сумма элементов строки матрицы 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], » »
кц
кон
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
(С++)Нахождение суммы эллементов в строках матрицы
а почему все забили на условие «содержащих хотябы n отриццательных элементов.» ?
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
const int m = 5; //размерность массива
int main(int argc, char *argv[])
<
int a[m][m]; //собсна массив
const int n = 2; //минимальное количество отрицательных элементов
//забивается массив случайными зачениями -10..10
for(int i = 0; i<m; ++i)
for(int j = 0; j<m; ++j)
a[j] = rand()%20 — 10;
for(int i = 0; i < m; ++i)
<
int ltz = 0; //ltz — less than zero — количество отрицательных элементов
int sum = 0;
for(int j = 0; j < m; ++j)
<
if(a[j] < 0)
ltz++;
sum += a[j];
>
if(ltz >= n)
cout<<«line «<<i<<» with «<<ltz<<» elements <0 with sum содержащих хотябы n отриццательных элементов») маленькая то будет много лишней работы делаться и будут тормоза ненужные. тогда его лучше переписать:) и делать за 2 прохода