Напишите программу которая вычисляет сумму элементов матрицы
Перейти к содержимому

Напишите программу которая вычисляет сумму элементов матрицы

Вычислить сумму и число положительных элементов матрицы 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 прохода

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *