Ошибка сегментации В C решение сложения больших чисел - PullRequest
0 голосов
/ 20 мая 2018

Сегодня я начал следить за званием хакера.Вопрос ниже.

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

.Следующая строка содержит

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

Пример ввода

5
1000000001 1000000002 1000000003 1000000004 1000000005
Output 
5000000015

Примечание. При добавлении нескольких целочисленных значений результирующая сумма может превысить указанный диапазон.Возможно, вам понадобится использовать long long int в C / C ++ или long тип данных в Java для хранения таких сумм.

Ответ, который я дал:

#include <stdio.h>
#include <stdlib.h>
int main (){
    int n ;
    int arr1[n];
    long long int arrcount ;
    scanf("%d" , n);
    for(int i = 0; i <= n; i++) {
        scanf("%d" , &arr1[n]);
    }
    for( int i = 0; i <=n; i++) {
        arrcount = arrcount + arr1[n];
    }
    printf("%li" , arrcount);
}

Но сообщение компилятора было «Ошибка сегментации»

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Это интересный порядок операторов:

int n ;
int arr1[n];
long long int arrcount ;
scanf("%d" , n);

Если вы используете n, чтобы установить размер массива во второй строке, но только предоставляете значение от до n в четвертой строке, как вы думаете, какое значение используется для размера массива?

0 голосов
/ 20 мая 2018

Взгляните на свои петли.Если массив проиндексирован нулями, какой последний элемент вашего массива?

Из предоставленного вами кода вы итерируете i от 0 до 5, когда n = 5. Сколько элементов вы читаете и каксколько вы добавляете к вашему итогу?

...