• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Proste dodawanie język C

0 głosów
48 wizyt
pytanie zadane 10 września w C i C++ przez Huti Nowicjusz (140 p.)
zamknięte 10 września przez Huti

Witam,

Napisałem taki oto kod, wydaje mi się, że program działa poprawnie. Niestety SPOJ go nie akceptuje i wyrzuca błąd SIGABRT. Przeszukałem już google ale nie udało mi się znaleźć rozwiązania problemu. Bardzo proszę o pomoc i pozdrawiam.

#include <stdio.h>

int main(void){

    int n = 0;
    char liczby[n];
    int testy;
    int i,j,k = 0;
    int suma = 0;

    scanf("%d", &testy);

    for(i = 1; i <= testy; i++){

        scanf("%d", &n);
        scanf("%d", &liczby[k++]);

        while(getchar() != '\n' && k < n)
            scanf("%d", &liczby[k++]);

        for(j = 0; j < n; j++){
            if(liczby[j] != ' '){
                suma += liczby[j];
            }
            else
                continue;
        }
        printf("%d\n", suma);
        suma = 0;
        k = 0;
        n = 0;
    }
    return 0;
}

 

komentarz zamknięcia: Problem rozwiązany
komentarz 10 września przez tkz Mądrala (6,580 p.)
    int n = 0;
    char liczby[n];

Tak ma być?

&liczby[k++]

Tak też?

komentarz 10 września przez Huti Nowicjusz (140 p.)

Zamieniłem to

&liczby[k++]

na pętlę

for (k = 0; k < n; k++)
                scanf("%d", &liczby[k]);

Ale nie wiem jak sobie poradzić z definiowaniem rozmiaru tablicy. W treści zadania nie ma podane ile liczb maksymalnie zostanie wpisane. Rozumiem, że problem tutaj jest taki, że tablica nie może mieć rozmiaru 0, ale jeśli nie zdefiniuje tego zera na początku program kończy swoje działanie zaraz po kompilacji.

komentarz 10 września przez tkz Mądrala (6,580 p.)
Kurcze, dziwię się, że to Ci się w ogóle skompilowało. Warto na pewno powtórzyć podstawy. Fajnie jakbys podał link do zadania. Po za tym musisz zdefiniować wielkość tablicy. Piszesz w C, możesz skorzystać z VLA.
komentarz 10 września przez Huti Nowicjusz (140 p.)
Link do zadania: https://pl.spoj.com/problems/RNO_DOD/.

Dopiero zaczynam z programowaniem, może troche za wcześnie wziąłem się za zadania ze SPOJ'a, ale kilka udało mi się rozwiązać dlatego próbuję dalej :)
komentarz 10 września przez mokrowski VIP (111,180 p.)

@Huti, To zadanie rozwiązuje się bez tablicy. Wystarczy zliczać ilość wczytywanych danych i je sukcesywnie dodawać. Nie staraj się także na siłę używać tablic VLA. Ta właściwość języka jest usilnie odradzana i w nowych standardach C jest już wyłącznie opcjonalna.

komentarz 10 września przez tkz Mądrala (6,580 p.)
przywrócone 10 września przez tkz
Poczytaj o dynamicznych tablicach w C, oraz ich zapełniaiu. Z resztą sobie na pewno poradzisz.
komentarz 10 września przez tkz Mądrala (6,580 p.)

mokrowski To co napisał faktycznie wydaje się łatwiejsze i czytelniejsze, i takie jest.

Gotowy kod jakbyś chciał zobaczyć. Nie wiem czy go zaliczy, nie mam spoja. 


















#include <stdio.h>

int main(void)
{
    int t;
    scanf("%i", &t);//ilosc testów
    while (t) //tak długo az ilosc testów nie bedzie rowna 0
    {
        int k = 0;
        int g = 0;
        int equale = 0;
        scanf("%i", &g);
        while(g)
        {
            scanf("%i", &k);
            equale+=k;
            g--;
        }
        printf("%i \n", equale); //wyswietlamy dane
        t--;//dekrementujemy ilosc restow
    }

    return 0;
}
komentarz 10 września przez Huti Nowicjusz (140 p.)
Dziękuję Wam za pomoc, już rozumiem o co chodzi!

Podobne pytania

0 głosów
2 odpowiedzi 75 wizyt
0 głosów
1 odpowiedź 74 wizyt
0 głosów
1 odpowiedź 227 wizyt
pytanie zadane 29 października 2016 w C i C++ przez kamil1996 Nowicjusz (120 p.)
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

66,495 zapytań

113,266 odpowiedzi

239,871 komentarzy

46,634 pasjonatów

Przeglądających: 242
Pasjonatów: 9 Gości: 233

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...