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

Błędna odpowiedź mimo prawidłowych wyników - SPOJ Sumy wielokrotne

0 głosów
105 wizyt
pytanie zadane 20 czerwca 2018 w SPOJ przez coderCpp93 Gaduła (3,970 p.)
zmienione kategorie 20 czerwca 2018 przez HaKIM

Witam


Mam problem z zadaniem Sumy wielokrotne. Mimo prawidłowych wyników zwraca błąd. Prawdopodobnie jest to związane z dodatkową sumą wszystkich wczytanych z wejścia liczb. Oto kod:

#include <iostream>
using namespace std;

long int x, y, z;

int main() {
    while (cin >> x) {
        y += x;

        if (x==0) {
            cout << y << endl;
            z += y;
            cout << z << endl;
            y = 0;
        }
    }
}

 

komentarz 20 czerwca 2018 przez Szfierzak Gaduła (3,200 p.)
edycja 20 czerwca 2018 przez Szfierzak

Z tego co widzę, to wypisujesz sumę wszystkich zestawów po każdym zestawie, a w zadaniu jest, żeby wypisywać tą sumę na końcu, tzn po wszystkich zestawach. Spróbuj wpisywać z po pętli while. Poza tym przydałaby się chyba inicjalizacja zmiennych y i z.

 

EDIT:

Spróbuj też zamiast inta dla z użyć long int;)

komentarz 20 czerwca 2018 przez k222 Nałogowiec (26,730 p.)
w zadaniu jest zakres do 10^15, więc long int to będzie za mało, za to long long spokojnie wystarczy, poza tym przenieś tego z tak jak kolega wyżej radził i powinno być ok
komentarz 20 czerwca 2018 przez niezalogowany
long int starczy (LP64). W komentarzu padła prawidłowa odpowiedź powinna zostać przeniesiona do sekcji odpowiedzi.
komentarz 20 czerwca 2018 przez coderCpp93 Gaduła (3,970 p.)
@Szfierzak lecz skąd program ma wiedzieć kiedy zestawy danych się kończą. W zadaniu jest napisane, że zostanie podana pewna nieokreślona ilość zestawów danych. Kiedy wyjść z pętli while i wypisać z?
komentarz 20 czerwca 2018 przez Szfierzak Gaduła (3,200 p.)
edycja 20 czerwca 2018 przez Szfierzak

Według kodu który umieściłeś, to z pętli while wyjdziesz w momencie kiedy nie uda się wczytać prawidłowo kolejnej liczby. Zgodnie z przykładem na spoj, jako ostatni znak, ostatniego zestawu danych będzie 0. W takim razie następnej liczby nie uda się wczytać i warunek pętli cin >> x przestanie być prawdziwy. Twój kod w każdym kroku drukuje dwa wyniki i to jest powodem błędu. Ponownie proponuję umieścić drukowanie z poza pętlą while, przy jednoczesnym pamiętaniu, żeby z zwiększać o y po każdym zestawie danych.

@Hipcio sam niestety nie mogę przenieść poprzedniego komentarza do sekcji odpowiedzi.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 161 wizyt
pytanie zadane 21 czerwca 2018 w SPOJ przez Jakub 0 Stary wyjadacz (13,190 p.)
0 głosów
2 odpowiedzi 376 wizyt
0 głosów
2 odpowiedzi 72 wizyt
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

66,364 zapytań

113,102 odpowiedzi

239,386 komentarzy

46,621 pasjonatów

Przeglądających: 314
Pasjonatów: 17 Gości: 297

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.

...