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

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

  • автор:

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

Надо написать функцию, которая принимает массив чисел и возвращает их сумму.

Вот мой неудачный код:

const arr = [20, 40, 77, 53]; const sum = 0; function count() < for (i = 0; i < arr.length; i++) < sum += arr[i]; >> count()
  • Вопрос задан более трёх лет назад
  • 28678 просмотров

Комментировать
Решения вопроса 2

WblCHA

Странно, столько ответов и ни одного редьюса.

const count = (arr) => arr.reduce((acc, num) => acc + num, 0);

А ещё почему-то никого не смутило, что автор к константе присваивает новое значение.

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

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

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 297 1 314 BIT 134
Но, как видно, исходный код получился слишком громоздким,

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

Другое дело, что на современных процессорах оптимизация уже лишена смысла, и код выполняется задолго до того, как до него дойдёт очередь (беспорядочное исполнение на ядре 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 ( i = 0 ; i < n ; i ++ ) Summa = Summa + A [ i ] ;

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

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

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

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