Перейти к содержимому

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

  • автор:

Вычислить сумму элементов массива, находящихся между минимальным и первым положительным элементами

Судя по условию if (A[i] > 0) sum += A[i]; вы подсчитываете только элементы больше нуля, так задумано?

19 ноя 2017 в 10:13
нет, не обязательно уже)
19 ноя 2017 в 10:30

У вас явно что-то не так не здесь. Доведенный до компилируемого состояния код нормально работает: ideone.com/Dp1ig0

19 ноя 2017 в 11:35

Все работает. Ошибка только одна — вы считаете 0 отрицательным. Постоянно выдает 0 или рандомные числа — не увидел. У вас лишние переменные, или странный метод поиска отрицательных элементов, по модулю меньших 10, но это не влияет на вычисление суммы. Можно улучшить алгоритм, но вопрос не в этом. Я не вижу никаких «рандомных значений».

19 ноя 2017 в 12:50
@Harry спасибо я понял почему не работало. ошибка в моей голове была, не так задание понял.
19 ноя 2017 в 14:33

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

ну раз не здесь то только n, может быть не весь массив проходите?

может приведёте входные данные, да и кода чуть выше приведённого. у меня суммы вроде бы правильно находит.

у меня работает. единственно правил работу с консолью ( язык другой ). сам алгоритм верный вроде. а вот как С++ переводит строки во float, может проблема там? Harry в коментах пишет что доводил до компиляции — до того как увидел работу с консолью.

C++ В одномерном массиве в заданном пользователем диапазоне,найти сумму элементов,значения которых меньше указанного пользователем

введите сюда описание изображения

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

 #include #include #include using namespace std; int main() < srand(time(NULL)); int arr[10]; cout > n; for (int i = 0; i < n; i++) < arr[i] = rand() % 15; >for (int i = 0;i < n;i++) < cout cout > x; cout > y; for (int i = 0; i < n; i++) < if (arr[i]y) sum += arr[i]; > cout

Отслеживать

задан 1 июл 2022 в 18:03

Darth Vader Darth Vader

31 5 5 бронзовых знаков

По-моему, вы делаете что-то не то. Условие массиве, заполненном случайными числами в заданном пользователем диапазоне подразумевает указание диапазона до генерации чисел. А сумму элементов, значения которых меньше указанного пользователем — ввод еще одного значения. Итого — 4 значения, включая размер массива. Вы же делаете случайные значения из предопределенного диапазона от 0 до 14 включительно, а суммируете элементы, не попавшие в некоторый указанный вами диапазон. Вернее, вы хотели бы это сделать, но поскольку вводите x > y , то вы некоторые элементы вообще суммируете дважды.

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

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

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

Pirnazar

Well-known member
Green Team

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

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

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

Другое дело, что на современных процессорах оптимизация уже лишена смысла, и код выполняется задолго до того, как до него дойдёт очередь (беспорядочное исполнение на ядре 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 работает не потому что «бог так решил» , а там под капотом кода побольше, чем в простом переборе массива.

Как найти сумму и произведение элементов массива на C++

Follow us on Twitter Follow us on rss

Такая задача часто встречается, если вы начали изучение программирования и уже дошли до работы с массивами.

Давайте разберемся с ней. Если вам необходимо найсти сумму или произведение элементов массива, или даже и то и другое, то нам понадобится для этого всего лишь один цикл.

Мы с напишем программу, которая выведет сам массив, сумму элементов массива, а также произведение элементов массива. Напишем ее на C++.

Прежде чем написать, давайте немного разберем сам алгоритм, обозначим шаги, которые необходимо будет сделать.

Первое — создадим сам массив, создадим начальную переменную для хранения суммы и начальную переменную для хранения произведения элементов массива.

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

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

Давайте теперь уже напишем программу, которая найдет сумму и произведение элементов массива на C++

#include using namespace std; int main() < /* Заполним массив значениями */ int n = 6; int mass[n] = ; /* Создадим переменные для хранения суммы и произведения */ int sumValue = 0; // Сумма int proValue = 1; // Произведение (по умолчанию 1) cout Вывод программы

Проверяем на калькуляторе — все работает как нужно.

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

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