Как посчитать сумму элементов массива c
Перейти к содержимому

Как посчитать сумму элементов массива c

  • автор:

Статья Как узнать, чему равна сумма элементов массива?

При решении различных задач, очень часто требуется узнать, чему равна сумма элементов массива или обобщенной коллекции. Обычно, для того чтобы найти сумму элементов массива используют обычный цикл, например:

int [] numbers = new int [] < 0, 1, 2, 3, 4, 5 >; int sum = 0; foreach (int value in numbers) < sum += value; >//Выводим результат Console.WriteLine("Сумма элементов массива: " + sum);

Наверное, это самый простой и распространенный способ решения данной задачи. Но, как видно, исходный код получился слишком громоздким, чтобы это исправить воспользуемся расширяющим методом Sum, который можно применить, как к массивам, так и к обобщенным коллекциям, например:

int sum = numbers.Sum(); Console.WriteLine("Сумма элементов: " + sum);

Можно даже ещё не много сократить код и сразу же вывести сумму всех элементов на экран консоли.

Console.WriteLine("Сумма: " + numbers.Sum());

Вот такое просто и элегантное решение.
Последнее редактирование: 26.11.2019

BKeaton

Well-known member
Green Team

  • Сообщения 204
  • Реакции 335
Marylin
Mod.Assembler

Red Team
05.06.2019 296 1 313 BIT 130
Но, как видно, исходный код получился слишком громоздким,

Это с какой стороны посмотреть..
например в отладчике, первый код будет наоборот самым компактным,
т.к. любой метод — это сотни строк дополнительного кода (можно даже профайлер запустить и посмотреть, какой из вариантов исполнится быстрее).

Другое дело, что на современных процессорах оптимизация уже лишена смысла, и код выполняется задолго до того, как до него дойдёт очередь (беспорядочное исполнение на ядре Out-of-Order). Правда если код имеет вложенный цикл, то на исполнительном конвейере получается пузырь «Bubble», и процессору приходится ждать. Но в данном случае цикл не вложенный и ваш вариант имеет место быть, правда компилятор превратит последний вариант в самый громоздкий.

snakey
New member

20.12.2019 3 0 BIT 0
Это ж не праздничный торт, это код. Код не должен быть вылизанным, код должен быть быстрым.

morgot

Green Team
25.07.2018 74 35 BIT 2
например в отладчике, первый код будет наоборот самым компактным,

Вот часто спрашивают, с какого языка надо начинать учить программирование. Типа чем плох питон или шарп.. Вот тем и плох. Кто начинал с Си + Асма, тот понимает, как оно все устроено на низком уровне. Что метод .sum работает не потому что «бог так решил» , а там под капотом кода побольше, чем в простом переборе массива.

Найти сумму элементов массива

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

Здравствуйте, уважаемые участники форума! Помогите, пожалуйста, найти знакопеременную сумму всех элементов массива (A0-A1+A2-A3+. ) и вывести результат на экран. Размерность массива 15. Массив я объявил. Дополните, пожалуйста мою программу, чтобы найти эту сумму. Если можно, то покажите, пожалуйста, как можно заполнить этот массив случайными числами с помощью команды rand. Заранее благодарен.

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
#include "stdafx.h" #include #include using namespace std; #include #define N 15 // Определение константы void main(void) { setlocale(LC_CTYPE, "rus"); int A[N]; // Объявление массива размера N int i; printf("Введите массив из %d чисел:\n", N); // Заполнение массива for (i = 0; iN; i++) { printf("A[%d]=", i); scanf_s("%d", &A[i]); } printf("Введеный массив:\n"); // Вывод массива for (i = 0; iN; i++) printf("A[%d]=%d\n", i, A[i]); }

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Найти сумму всех элементов массива и поделить каждый элемент на эту сумму
уже голову сломала че тут не так:wall: задание:дан массив А(5), найти сумму всех элементов, потом.

Найти сумму четных и сумму нечетных элементов массива
Написать программу, которая находит сумму четных и сумму нечетных элементов массива, Размер.

Найти сумму элементов массива, расположенных до минимального элемента массива
В одномерном массиве n вещественных элементов. вычислить: -произведение положительных элементов.

Найти сумму элементов массива в области правого и левого сегмента двумерного массива
Добрый день.Есть задание:Найти сумму элементов массива в области правого и левого сегмента.

55 / 18 / 19
Регистрация: 11.11.2014
Сообщений: 463

Немножко переделал как меня учили, но смысл остался прежним . Про генератор случ. чисел глянь в интернете там полно.

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
#pragma hdrstop #pragma argsused #include #include #include #include #include int _tmain(int argc, _TCHAR* argv[]) { SetConsoleOutputCP(1251); SetConsoleCP(1251); int A[15]; // Объявление массива размера N int i,sum=0; printf("Введите массив A:\t"); for (i = 0; i  15; i++) { printf("A[%d]", i); scanf ("%i", &A[i]) ; } for (i = 0; i  15; i++) { //Вот тут и начинает подсчитывать сумму всех элементов. sum += A[i]; } printf("Сумма элементов = %d", sum); getch(); return 0; }

Добавлено через 9 минут
Немножко не правильно условие прочитал, исправил самым элементарным способом)
Заменил вот это

1 2 3 4
for (i = 0; i  15; i++) { sum += A[i]; }
sum = A[0]-A[1]+A[2]-A[3]+A[4]-A[5]+A[6]-A[7]+A[8]-A[9]+A[10]-A[11]+A[12]-A[13]+A[14];

Но здесь надо делать с помощью цикла и операться на то, что все чётные i прибавляются, а нечётные i отнимаются. Щас попробую сделать.

Добавлено через 1 час 2 минуты
Можно ещё таким вариантом. Естественно, если на экране sum sum1 sum2 будет мешать, то можно убрать.

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
#pragma hdrstop #pragma argsused #include #include #include #include #include #include int _tmain(int argc, _TCHAR* argv[]) { SetConsoleOutputCP(1251); SetConsoleCP(1251); int A[15]; // Объявление массива размера N int i,sum=0, sum1=0, sum2, konsum; printf("Введите массив A:\t"); for (i = 0; i  15; i++) { printf("A[%d]", i); scanf ("%i", &A[i]) ; } for (i = 0; i  15; i++) { sum += A[i]; } printf("Сумма всех элементов = %d\n", sum); for (i = 1; i  15; i=i+2) { sum1 += A[i]; } printf("Сумма чисел которые отнимаются = %d\n", sum1); sum2 = sum-sum1; printf("Сумма чисел которые прибавляются = %d\n", sum2); konsum = sum2 -sum1; printf("Знакопеременная сумма всех элементов массива = %d\n", konsum); getch(); return 0; }

Как найти сумму элементов массива, находящихся на нечётных позициях?

Для информации: в цикле for не обязательно переменную цикла инициализировать нулем, а так же не обязательно делать инкремент переменной цикла — можно делать произвольную операцию (операции). Конкретно к вашей задаче для обхода только нечетных элементов массива можно использовать такой цикл: for (int i=1; i
13333 @13333 Автор вопроса
Александр Ананьев, не указано
13333 @13333 Автор вопроса

6391dc4b9fce5056738876.png

res2001,

Решения вопроса 2
Разработчик на С++, экс-олимпиадник.

Код выглядит правильно, только массив объявлен на 15 элементов, а цикл до 16 идет. И, возможно, надо 0 на 1 в проверке поменять. «Нечетные позиции», по человечески — это первая, третье и т.д. Но им соответствуют четные индексы 0, 2.

Edit: А еще в коде стоит точка с запятой после for, из-за чего цикл оказывается пустым, а вводится только один элемент (и тот за границей массива):

Сумма массива

Сумма элементов массива обычно ищется с помощью цикла. Например, можно использовать цикл for.

Это выглядит так

for ( i = 0 ; i < n ; i ++ ) Summa = Summa + A [ i ] ;

Вначале сумма равна 0. А далее последовательно складываются все элементы массива.

Часто массив нужно предварительно ввести с клавиатуры, просуммировать, а затем вывести на экран сумму элементов массива. Это можно сделать с помощью команд cin и cout. И вся программа будет выглядеть так:

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

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