Как найти сумму элемента массива в си

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given an array of integers, find the sum of its elements.

    Examples:

    Input : arr[] = {1, 2, 3}
    Output : 6
    Explanation: 1 + 2 + 3 = 6

    Input : arr[] = {15, 12, 13, 10}
    Output : 50

    C

    #include <bits/stdc++.h>

    int sum(int arr[], int n)

    {

        int sum = 0;

        for (int i = 0; i < n; i++)

            sum += arr[i];

        return sum;

    }

    int main()

    {

        int arr[] = { 12, 3, 4, 15 };

        int n = sizeof(arr) / sizeof(arr[0]);

        printf("Sum of given array is %d", sum(arr, n));

        return 0;

    }

    Output

    Sum of given array is 34

    Time Complexity: O(n)
    Auxiliary Space: O(1)

    Another Method#2: Using Recursion

    C

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    int sum(int arr[], int n)

    {

        if (n == 0) {

            return 0;

        }

        else {

            return arr[0] + sum(arr + 1, n - 1);

        }

    }

    int main()

    {

        int arr[] = { 12, 3, 4, 15 };

        int n = sizeof(arr) / sizeof(arr[0]);

        printf("%d", sum(arr, n));

        return 0;

    }

    Time Complexity: O(n)
    Auxiliary Space: O(n)

    Another Method#3: Using prefix sum

    C

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    int main()

    {

        int vec[] = { 12, 3, 4, 15 };

        int n = sizeof(vec) / sizeof(vec[0]);

        int prefix[n];

        prefix[0] = vec[0];

        for (int i = 1; i < n; i++) {

            int temp = prefix[i - 1] + vec[i];

            prefix[i] = temp;

        }

        printf("%dn", prefix[n - 1]);

        return 0;

    }

    Time Complexity: O(n)
    Auxiliary Space: O(n), for recursive stack space. 

    Last Updated :
    01 May, 2023

    Like Article

    Save Article

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

    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
    
    #pragma hdrstop
    #pragma argsused
     
    #include <tchar.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <windows.h>
     
     
    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 минут
    Немножко не правильно условие прочитал, исправил самым элементарным способом)
    Заменил вот это

    C
    1
    2
    3
    4
    
    for 
    (i = 0; i < 15; i++) { 
    sum += A[i];
    }

    На это

    C
    1
    
    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 будет мешать, то можно убрать.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    #pragma hdrstop
    #pragma argsused
     
    #include <tchar.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <windows.h>
    #include <math.h>
     
     
    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("Сумма всех элементов = %dn", sum);
     
           for (i = 1; i < 15; i=i+2) {
            sum1 += A[i];
           }
           printf("Сумма чисел которые отнимаются = %dn", sum1);
     
           sum2 = sum-sum1;
             printf("Сумма чисел которые прибавляются = %dn", sum2);
     
           konsum = sum2 -sum1;
           printf("Знакопеременная сумма всех элементов массива = %dn", konsum);
     
     
     
     
        getch();
        return 0;
    }

    Формулировка задачи:

    Дан массив из 10 целочисленных элементов. Посчитать сумму всех элементов массива.
    Как это в С писать, помогите с кодом

    В чем ошибка?

    #include "stdafx.h"
    #include <stdio.h>
    #include "conio.h"
     
    int main(void)
    {  int i,s;
    s=0;
    char m[10];
    for (i=0;i<10;i++)
    {
        scanf("%c", &m[i]);
    }
    s=s+m[i];
    printf("%i",s);
       getch();
        return 0;
    }

    Код к задаче: «Посчитать сумму всех элементов массива»

    textual

    #include "stdafx.h"
    #include <stdio.h>
    #include "conio.h"
     
    int main(void)
    {  int i,s;
    s=0;
    char m[10];
    for (i=0;i<10;i++)
    {
        scanf("%c", &m[i]);
        s=s+m[i];
    }
    printf("%i",s);
       getch();
        return 0;
    }

    Полезно ли:

    12   голосов , оценка 3.583 из 5

    Для
    обращения к
    элементу массива

    указывают его имя, а затем в квадратных
    скобках индекс:

    имя_массива
    [индекс]

    Например:

    const
    int n=15; double C[n],S;

    S=C[0]+C[n-1];

    Массиву,
    как и любой другой переменной, можно
    присвоить начальное значение
    (инициализировать):

    тип
    имя [размерность]={элемент_0, элемент_1,
    …};

    Например,
    формируется массив из шести вещественных
    чисел, значения элементам присваиваются
    по порядку:

    float
    a[6]={1.2,(float)3/4,5./6,6.1};

    Элементы
    значения, которых не указаны, обнуляются;
    для элементов a[1]
    и a[2]
    выполняется преобразование типов

    a[0]=1.2,
    a[1]=(float)3/4=0.75, a[2]=5./6=0.83333,

    a[3]=6.1,
    a[4]=0, a[5]=0,

    Все
    манипуляции с массивами в С++ осуществляются
    поэлементно.
    Организовывается цикл, в котором
    происходит последовательное обращение
    к нулевому, первому, второму и т.д.
    элементам. В общем виде алгоритм
    обработки массива

    показан на рис. 15:

    Рис. 15. Алгоритм
    обработки массива

    4.3.3. Ввод-вывод элементов массива

    Ввод
    и вывод
    массивов так же осуществляется поэлементно
    (рис. 16-17).

    Рис.
    16. Алгоритм ввода
    массива
    .
    Рис. 17. Алгоритм вывода
    массива

    Варианты
    ввода массива:

    Вариант
    1. Ввод массива с помощью функции scanf.

    int
    main()

    {

    float
    x[10]; int i,n;

    printf(“n
    N=”); scanf(“%d”,&n);

    printf(“n
    INPUT X n”);

    for(i=0
    ; i<n; scanf(“%f”,&x[i]), i++); }

    Вариант
    2. Ввод массива с помощью оператора cin.

    int
    main()

    {
    int X[10],N,i;

    cout<<“n
    N=”; cin>>N;

    for
    (i=0; i<N; cout<<“n X[“<<i<<“]=”,

    cin>>X[i],
    i++);
    }

    Варианты
    вывод массива
    :

    Вариант
    1.

    Вывод массива в виде строки.

    for(i=0;
    i<n; printf(“%f t”,X[i]), i++);

    Вариант
    2.

    Вывод массива в виде столбца.

    for(i=0;
    i<n; printf(“n %f “,X[i]), i++);

    Вариант
    3.

    Вывод массива в виде строки.

    for
    (i=0;i<N; cout <<“t X[“<<i<<“]=”<<X[i],i++);

    Вариант
    4.

    Вывод массива в виде столбца.

    for
    (i=0;i<N; cout <<“n X[“<<i<<“]=”<<X[i];i++)

    4.3.4. Вычисление суммы элементов массива

    Дан
    массив X,
    состоящий из n
    элементов. Найти сумму элементов этого
    массива (рис. 18).

    Рис. 18. Алгоритм
    вычисления суммы элементов массива

    Фрагмент программы:

    for
    (S=0, i=0; i<N; S+=X[i], i++); cout<<“S=”<<S<<“n”;

    4.3.5. Вычисление произведения элементов массива

    Дан
    массив X,
    состоящий из n
    элементов. Найти произведение элементов
    этого массива (рис. 19).

    Рис. 19. Алгоритм
    вычисления произведения элементов в
    массиве.

    Фрагмент
    программы:

    for
    (P=1, i=0; i<N; P*=X[i], i++); cout<<“P=”<<P<<“n”;

    4.3.6. Поиск максимального элемента и его номера

    Дан
    массив X,
    состоящий из n
    элементов. Найти максимальный элемент
    массива и номер (рис. 20).

    Рис. 20. Алгоритм
    пориска наибольшего элемента в массиве

    Фрагмент программы:

    for
    (Max=X[0],Nmax=0,i=0;i<n;i++)

    if
    (Max<X[i])

    {
    Max=X[i]; Nmax=i; }

    cout<<“Max=”<<Max<<“n”;

    cout<<“Nmax=”<<Nmax<<“n”;

    Алгоритм
    поиска минимального
    элемента
    в
    массиве отличается тем, что в условном
    блоке и в конструкции if
    текста программы знак поменяется с <
    на >.

    4.3.7. Сортировка элементов в массиве

    Сортировка
    это процесс упорядочения элементов в
    массиве в порядке возрастания или
    убывания их значений:

    Y[0]
    £
    Y[1] £…
    £
    Y[n-1] или
    Y[0] ³
    Y[1] ³…
    ³
    Y[n-1].

    Сортировка
    пузырьковым
    методом

    основана на выполнении в цикле операций
    сравнения и при необходимости обмена
    соседних элементов (рис. 21). Для
    преобразования массива Y,
    состоящего из n
    элементов, необходимо просмотреть его
    n–1
    раз, каждый
    раз уменьшая диапазон просмотра на 1
    элемент (рис. 22).

    Рис. 21. Схема обмена
    элементов

    Рис. 22. Алгоритм
    сортировки массива

    в порядке возрастания
    элементов

    Фрагмент программы:

    int
    main()

    {

    int
    y[10],n,i,b,j;

    cout<<“n
    N=”; cin>>n;

    for
    (i=0;i<n; cout<<“n Y[“<<i<<“]=”;
    cin>>y[i]; i++);

    for(j=1;j<n;j++)

    for(i=0;i<n-j;i++)

    if
    (y[i]>y[i+1])

    {

    b=y[i];

    y[i]=y[i+1];

    y[i+1]=b;

    }

    for
    (i=0;i<n; cout<<y[i]<<“t”, i++);

    return
    0;

    }

    Для
    перестановки элементов в массиве по
    убыванию

    необходимо при сравнении элементов
    массива заменить знак >
    на <.

    Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    • #
    #include <stdio.h>
    
    int main()
    {
         int i, n,m,d, a[200], b[200], f=1,k,j,tmp,sum;
       
        printf("Intput n:");
        scanf("%d", &n);
        for (i = 0; i < n; i++)   
    	scanf("%d", &a[i]);
        
        printf("Intput m:");
        scanf("%d", &m);
        for (i = 0; i < m; i++)   
    	scanf("%d", &b[i]);
        
          k=m;
        for (i = 0; i < n; i++)
        {
            for (d = 0; d < m; d++)
                    {
                        if (b[d] == a[i])
                            f = 0;
                    }
                    if (f)
                    {
                        b[k++] = a[i];
                        
                    }
                    f = 1;
        } 
        for(i = 0 ; i < k - 1; i++) 
    { 
           for(j = 0 ; j < k - i - 1 ; j++)
           {  
               if(b[j] > b[j+1])
               {           
                  
                  tmp = b[j];
                  b[j] = b[j+1] ;
                  b[j+1] = tmp; 
               }
           }
    }
    
    
    
        
             for (i = 0; i < k; i++)          
     			
    	printf("%d ", b[i]);
    	
       
    
        return 0;
    }

    Как тут найти сумму элементов которые я вывожу?

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