Как найти сумму чисел в си шарп

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

Marylin


  • #2

Но, как видно, исходный код получился слишком громоздким,

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

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

  • #3

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

  • #4

например в отладчике, первый код будет наоборот самым компактным,

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

MLNK

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

Метки нет (Все метки)


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

Данная последовательность целых чисел. Найти сумму элементов массива

C#
1
2
3
4
5
int summa=0;
 
for (int i = 0; i < n; ++i)
 
summa=summa+а[i];



1



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

16.12.2010, 14:32

Ответы с готовыми решениями:

Определить число и сумму элементов, расположенных внутри отрезка [а,в], найти сумму нечетных элементов массива
Ребята, помогите. пожалуйста, кому не сложно, лабораторная по программированию на языке c#, вот…

Найти сумму четных элементов массива и найти произведение нечетных элементов массива
Вводим кол-во элементов массива, массив заполняется случайными числами, найти сумму четных…

Найти сумму элементов массива, которые делят максимальное значение элементов массива без остатка
Дан целочисленный массив из n элементов. Элементы могут принимать целые значения от -10 до
50….

Найти сумму четных элементов массива целых чисел. Размерность массива – 20. Заполнение массива осуществить случайными числами от 100 до 200
Найти сумму четных элементов массива целых чисел. Размерность массива – 20. Заполнение массива…

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

C#
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
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n;
            Console.WriteLine("Введите размер массива: ");
            n = int.Parse(Console.ReadLine());
            float[] massiv = new float[n];
            Console.WriteLine("Введите элементы массива: ");
            for (int i = 0; i < n; i++)
            {
                massiv[i] = float.Parse(Console.ReadLine());
            }
            float Sum = 0;
            for (int i = 0; i < n; i++)
            {
               Sum+=massiv[i];
            }
            Console.WriteLine("Сумма="+Sum);
        }
    }
}

Добавлено через 57 секунд
я не заметил что числа целые, при обьявлении массива обьявляете int вместо float



2



NiceGuyEddy

220 / 143 / 35

Регистрация: 25.06.2010

Сообщений: 383

16.12.2010, 14:38

4

C#
1
2
3
4
5
6
7
8
9
10
11
12
int[] mas = new int[5];
            Random rnd = new Random();
            int sum = 0;
            for (int i = 0; i < mas.Length; i++)
            {
                mas[i] = rnd.Next(1, 10);
                sum += mas[i];
                Console.Write(mas[i] + " ");
            }
            Console.WriteLine();
            Console.WriteLine(sum);
            Console.ReadKey();

А вообще вот эту тему почитайте.



2



prime17

19 / 15 / 5

Регистрация: 12.02.2010

Сообщений: 160

16.12.2010, 14:44

 [ТС]

5

если не тяжело, вот еще есть задание

Данная последовательность целых чисел. Найти максимальный элемент массива и минимальный элемент массива.

C#
1
2
3
4
5
int маx_el=0;
 
for (int i = 0; i < n; ++i)
 
if (а[i]> маx_el) маx_el=а[i];

и еще вот такое
Данный массив результатов забега на 100 м. Найти номер бегуна, имеющий лучший результат

Буду очень благодарен



0



Бельфегор

687 / 601 / 139

Регистрация: 08.05.2009

Сообщений: 1,098

16.12.2010, 14:48

6

C#
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
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int n;
            Console.WriteLine("Введите размер массива: ");
            n = int.Parse(Console.ReadLine());
            int[] massiv = new int[n];
            Console.WriteLine("Введите элементы массива: ");
            for (int i = 0; i < n; i++)
            {
                massiv[i] = int.Parse(Console.ReadLine());
            }
            int min = massiv[0], max = massiv[0];
            for (int i = 0; i <n; i++)
            {
              if(max<massiv[i])
              {
              max=massiv[i];
              }
                if(min>massiv[i])
                {
                min=massiv[i];
                }
            }
            Console.WriteLine("min="+min);
            Console.WriteLine("max=" + max);
        }
    }
}

Добавлено через 52 секунды

Цитата
Сообщение от prime17
Посмотреть сообщение

Данный массив результатов забега на 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

Цитата
Сообщение от prime17
Посмотреть сообщение

как и мне так научиться программировать? с чего надо начать? посоветуйте пожалуйста

как програмировать?! это не верх пилотажа, это примитивные задачи
на счет как научится советую книги читать, кстати на форуме есть темы на счет книг.



1



NiceGuyEddy

16.12.2010, 14:54


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

Не по теме:

Цитата
Сообщение от prime17
Посмотреть сообщение

с чего надо начать?

С чтения книг и желания. Какие книги Вам нужны на форуме обсуждалось неоднократно.



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.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++;
}

Связанные темы

  • Одномерные массивы. Примеры решения задач на одномерные массивы. Массивы структур. Массивы классов
  • Многомерные массивы. Ступенчатые массивы

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