В этом посте мы обсудим, как вычислить сумму всех элементов в целочисленном массиве в C#.
1. Использование Enumerable.Sum()
метод
Мы можем использовать встроенный метод числовой агрегации Sum() от System.Linq
namespace для вычисления суммы числовых значений в последовательности. Это показано ниже:
using System; using System.Linq; public class Example { public static void Main() { int[] array = { 1, 2, 3, 4, 5 }; int sum = array.Sum(); Console.WriteLine(sum); } } |
Скачать Выполнить код
2. Использование Array.ForEach()
метод
С использованием Array.ForEach() метод, мы можем выполнить операцию сложения для каждого элемента указанного массива. Следующий пример демонстрирует это, находя общую сумму всех элементов массива, используя Array.ForEach()
:
using System; public class Example { public static void Main() { int[] array = { 1, 2, 3, 4, 5 }; int sum = 0; Array.ForEach(array, i => sum += i); Console.WriteLine(sum); } } |
Скачать Выполнить код
3. Использование foreach
петля
Мы также можем перебирать элементы массива с помощью оператора foreach и вычислять сумму на лету. Это показано ниже:
using System; public class Example { public static void Main() { int[] array = { 1, 2, 3, 4, 5 }; int sum = 0; foreach (int item in array) { sum += item; } Console.WriteLine(sum); } } |
Скачать Выполнить код
4. Использование Enumerable.Aggregate()
метод
Наконец, можно использовать Enumerable.Aggregate() метод в System.Linq
Пространство имен, которое применяет функцию аккумулятора к каждому элементу последовательности.
В следующем примере кода показано, как использовать Aggregate для выполнения сложения.
using System; using System.Linq; public class Example { public static void Main() { int[] array = { 1, 2, 3, 4, 5 }; int sum = array.Aggregate((total, next) => total + next); Console.WriteLine(sum); } } |
Скачать Выполнить код
Это все о вычислении суммы всех элементов массива в C#.
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂
При решении различных задач, очень часто требуется узнать, чему равна сумма элементов массива или обобщенной коллекции. Обычно, для того чтобы найти сумму элементов массива используют обычный цикл, например:
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, который можно применить, как к массивам, так и к обобщенным коллекциям, например:
C#:
int sum = numbers.Sum();
Console.WriteLine("Сумма элементов: " + sum);
Можно даже ещё не много сократить код и сразу же вывести сумму всех элементов на экран консоли.
C#:
Console.WriteLine("Сумма: " + numbers.Sum());
Вот такое просто и элегантное решение.
Последнее редактирование: 26.11.2019
-
#2
Но, как видно, исходный код получился слишком громоздким,
Это с какой стороны посмотреть..
например в отладчике, первый код будет наоборот самым компактным,
т.к. любой метод – это сотни строк дополнительного кода (можно даже профайлер запустить и посмотреть, какой из вариантов исполнится быстрее).
Другое дело, что на современных процессорах оптимизация уже лишена смысла, и код выполняется задолго до того, как до него дойдёт очередь (беспорядочное исполнение на ядре Out-of-Order). Правда если код имеет вложенный цикл, то на исполнительном конвейере получается пузырь “Bubble”, и процессору приходится ждать. Но в данном случае цикл не вложенный и ваш вариант имеет место быть, правда компилятор превратит последний вариант в самый громоздкий.
-
#3
Это ж не праздничный торт, это код. Код не должен быть вылизанным, код должен быть быстрым.
-
#4
например в отладчике, первый код будет наоборот самым компактным,
Вот часто спрашивают, с какого языка надо начинать учить программирование. Типа чем плох питон или шарп.. Вот тем и плох. Кто начинал с Си + Асма, тот понимает, как оно все устроено на низком уровне. Что метод .sum работает не потому что “бог так решил” , а там под капотом кода побольше, чем в простом переборе массива.
MLNK
Mod. Ethical Hacking
-
#5
Наверное, это самый простой и распространенный способ решения данной задачи. Но, как видно, исходный код получился слишком громоздким, чтобы это исправить воспользуемся расширяющим методом Sum, который можно применить, как к массивам, так и к обобщенным коллекциям, например:
для того чтобы использовать sum() тебе надо использовать System.Linq, а там кода куда больше чем обычной foreach.
prime17 19 / 15 / 5 Регистрация: 12.02.2010 Сообщений: 160 |
||||
1 |
||||
Найти сумму элементов массива16.12.2010, 14:32. Показов 94600. Ответов 8 Метки нет (Все метки)
Данная последовательность целых чисел. Найти сумму элементов массива
1 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
16.12.2010, 14:32 |
Ответы с готовыми решениями: Определить число и сумму элементов, расположенных внутри отрезка [а,в], найти сумму нечетных элементов массива Найти сумму четных элементов массива и найти произведение нечетных элементов массива Найти сумму элементов массива, которые делят максимальное значение элементов массива без остатка Найти сумму четных элементов массива целых чисел. Размерность массива – 20. Заполнение массива осуществить случайными числами от 100 до 200 8 |
80 / 73 / 25 Регистрация: 26.10.2010 Сообщений: 231 |
|
16.12.2010, 14:34 |
2 |
у Вас все правильно… чуток строк не хватает.
2 |
Бельфегор 687 / 601 / 139 Регистрация: 08.05.2009 Сообщений: 1,098 |
||||
16.12.2010, 14:38 |
3 |
|||
Добавлено через 57 секунд
2 |
NiceGuyEddy 220 / 143 / 35 Регистрация: 25.06.2010 Сообщений: 383 |
||||
16.12.2010, 14:38 |
4 |
|||
А вообще вот эту тему почитайте.
2 |
prime17 19 / 15 / 5 Регистрация: 12.02.2010 Сообщений: 160 |
||||
16.12.2010, 14:44 [ТС] |
5 |
|||
если не тяжело, вот еще есть задание Данная последовательность целых чисел. Найти максимальный элемент массива и минимальный элемент массива.
и еще вот такое Буду очень благодарен
0 |
Бельфегор 687 / 601 / 139 Регистрация: 08.05.2009 Сообщений: 1,098 |
||||
16.12.2010, 14:48 |
6 |
|||
Добавлено через 52 секунды
Данный массив результатов забега на 100 м. Найти номер бегуна, имеющий лучший результат нужно найти минимум из чисел, уже решено выше
1 |
19 / 15 / 5 Регистрация: 12.02.2010 Сообщений: 160 |
|
16.12.2010, 14:51 [ТС] |
7 |
как и мне так научиться программировать? с чего надо начать? посоветуйте пожалуйста
0 |
687 / 601 / 139 Регистрация: 08.05.2009 Сообщений: 1,098 |
|
16.12.2010, 14:54 |
8 |
как и мне так научиться программировать? с чего надо начать? посоветуйте пожалуйста как програмировать?! это не верх пилотажа, это примитивные задачи
1 |
NiceGuyEddy |
16.12.2010, 14:54
|
Не по теме:
с чего надо начать? С чтения книг и желания. Какие книги Вам нужны на форуме обсуждалось неоднократно.
1 |
Решение задач на операторы цикла для обработки одномерных массивов. Циклы for, while, do…while
Содержание
- Решение задач
- 1. Нахождение суммы элементов массива из n вещественных чисел
- 1.1. Решение с использованием цикла for
- 1.2. Решение с использованием цикла while
- 1.3. Решение задачи. Цикл do…while
- 2. Нахождение среднего арифметического элементов массива из n вещественных чисел.
- 2.1. Решение. Цикл for
- 2.2. Решение. Цикл while
- 2.3. Решение. Цикл do…while
- 3. Поэлементное копирование массивов
- 3.1. Цикл for
- 3.2. Цикл while
- 3.3. Цикл do…while
- 4. Обращение массива (получить результирующий массив, обратный к исходному)
- 5. Обращение массива без использования дополнительного массива
- 1. Нахождение суммы элементов массива из n вещественных чисел
- Связанные темы
Поиск на других ресурсах:
1. Нахождение суммы элементов массива из n вещественных чисел.
1.1. Решение с использованием цикла for
// сумма элементов массива вещественных чисел int n=10; // задать значение n float[] A = new float[n]; float sum; // результат - сумма элементов массива // задать значение n n = 10; // заполнение массива A произвольными значениями for (int i=0; i<n; i++) A[i] = 0.1f * i; // сначала обнулить значение sum sum = 0; // цикл вычисления суммы for (int i=0; i<n; i++) sum = sum + A[i];
1.2. Решение с использованием цикла while
Решение задачи с использованием цикла while
// сумма элементов массива вещественных чисел - цикл while int n = 10; // задать значение n float[] A = new float[n]; float sum; // результат - сумма элементов массива int i; // дополнительная переменная // заполнение массива A произвольными значениями через цикл while i=0; while (i<n) { A[i] = 0.1f*i; i++; } // цикл вычисления суммы // сначала обнулить значение sum и i sum = 0; i = 0; // цикл while для вычисления суммы while (i<n) { sum += A[i]; i++; }
1.3. Решение задачи. Цикл do…while
// сумма элементов массива вещественных чисел - цикл do..while int n = 10; // задать значение n float[] A = new float[n]; // массив float sum; // результат - сумма элементов массива int i; // дополнительная переменная // заполнение массива A произвольными значениями через цикл do..while i=0; do { A[i] = 0.1f*i; i++; } while (i<n); // цикл вычисления суммы // сначала обнулить значение sum и i sum = 0; i = 0; // цикл do..while для вычисления суммы do { sum += A[i]; i++; } while (i<n);
2. Нахождение среднего арифметического элементов массива из n вещественных чисел.
Чтобы найти среднее арифметическое элементов массива, сначала нужно найти сумму элементов массива, а потом эту сумму поделить на число элементов массива.
2.1. Решение. Цикл for
В примере пропущен ввод массива и количества элементов массива n
// среднее арифметическое элементов массива вещественных чисел - цикл for int n = 10; // n - количество элементов массива float[] A = new float[n]; // объявление массива float avg; // результат - среднее арифметическое int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // сумма вычисляется в переменной avg avg = 0; // цикл for для вычисления суммы for (i=0; i<n; i++) { avg += A[i]; } // вычисление среднего арифметического avg = avg / n;
2.2. Решение. Цикл while
В примере пропущен ввод массива и количества элементов массива n.
// среднее арифметическое элементов массива вещественных чисел - цикл while int n = 10; // n - количество элементов массива float[] A = new float[n]; // объявление массива float avg; // результат - среднее арифметическое int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // сумма вычисляется в переменной avg avg = 0; i = 0; // цикл while для вычисления суммы while (i<n) { avg += A[i]; i++; } // вычисление среднего арифметического avg = avg / n;
2.3. Решение. Цикл do…while
В примере пропущен ввод массива и количества элементов массива n
// среднее арифметическое элементов массива вещественных чисел - цикл do..while int n = 10; // n - количество элементов массива float[] A = new float[n]; // объявление массива float avg; // результат - среднее арифметическое int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // сумма вычисляется в переменной avg avg = 0; i = 0; // цикл do..while для вычисления суммы do { avg += A[i]; i++; } while (i<n); // вычисление среднего арифметического avg = avg / n;
3. Поэлементное копирование массивов
3.1. Цикл for
В данном примере приводится фрагмент кода, копирующий массив A из 10 вещественных чисел (float) в массив B.
// поэлементное копирование массивов int n = 10; // n - количество элементов массива float[] A = new float[n]; // массив-источник float[] B = new float[n]; // массив-назначение int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // цикл копирования A => B for (i=0; i<n; i++) B[i] = A[i];
3.2. Цикл while
Фрагмент копирования массива A в массив B с использованием цикла while
// поэлементное копирование массивов int n = 10; // n - количество элементов массива float[] A = new float[n]; // массив-источник float[] B = new float[n]; // массив-назначение int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // цикл копирования A => B i=0; while (i<n) { B[i] = A[i]; i++; }
3.3. Цикл do…while
Реализация копирования массивов с использованием цикла do…while
// поэлементное копирование массивов int n = 10; // n - количество элементов массива float[] A = new float[n]; // массив-источник float[] B = new float[n]; // массив-назначение int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // цикл копирования A => B i=0; do { B[i] = A[i]; i++; } while (i<n);
4. Обращение массива (получить результирующий массив, обратный к исходному)
Пусть имеются два массива с именами A и B. Массив A задается. Получить результирующий массив B, обратный к исходному массиву A (элементы массива B идут в обратном порядке по отношению к массиву A).
В данном примере приводится реализация обращения массива с помощью трех известных операторов цикла.
// Получение обратного массива int n = 10; // n - количество элементов массива float[] A = new float[n]; // массив-источник float[] B = new float[n]; // обратный массив - результат int i; // дополнительная переменная // ввод массива A и количества элементов массива n // ... // решение задачи с помощью цикла do...while обратного копирования A => B i=0; do { B[i] = A[n-i-1]; i++; } while (i<n); // решение с помощью цикла for for (i=0; i<n; i++) B[i] = A[n-i-1]; // решение с помощью цикла while i=0; while (i<n) { B[i] = A[n-i-1]; ++i; }
5. Обращение массива без использования дополнительного массива
Задан массив A с n вещественных чисел. Реализовать операцию обращения массива без использования дополнительного массива.
В приведенном ниже коде реализовано обращение массива с использованием операторов циклов for, while, do…while.
Пусть задано следующее описание типов данных
// Обращение массива A int n = 10; // n - количество элементов массива double[] A = new double[n]; // обрабатываемый массив int i; // дополнительная переменная double t; // дополнительная переменная // ввод массива A и количества элементов массива n // ...
Тогда решение задачи с использованием цикла do…while
// решение задачи с помощью цикла do...while обратного копирования A => B i=0; do { t = A[i]; A[i] = A[n-i-1]; A[n-i-1] = t; i++; } while (i < (n/2));
Решение задачи с использованием цикла for
// решение с помощью цикла for for (i=0; i<n/2; i++) { t = A[i]; // использование дополнительной переменной t A[i] = A[n-i-1]; A[n-i-1] = t; }
Решение задачи с использованием цикла while.
// решение с помощью цикла while i=0; while (i<n/2) { t = A[i]; A[i] = A[n-i-1]; A[n-i-1] = t; i++; }
Связанные темы
- Одномерные массивы. Примеры решения задач на одномерные массивы. Массивы структур. Массивы классов
- Многомерные массивы. Ступенчатые массивы