41 / 49
Aug 2018

Poprawiłem mój kod ale dalej lipton tea…

Dalej wykłada się na tym samym tescie. I przeczytaj treść zadania. Tam nigdzie nie pisze że zawsze występuje na końcu wszystkich testów pojedyncze zero. A twój program tego chce.

Dziękuje za pomoc :slight_smile: w końcu się udało.
Trudność tego zadania polega na zroumieniu co to znaczy nieokreślona ilość zestawów danych.
Jak się ogarnie to życie staję się piękniejsze :slight_smile:

1 month later

Cześć, mam mały problem z tym zadaniem.
W teorii program działa poprawnie, lecz sędzia go odrzuca.
Byłby ktoś w stanie pomóc?

dokładne przeczytanie treści zadania powinno pomóc
przeczytanie całego wątku też nie zaszkodzi
a potem zostanie tylko uproszczenie kodu i powinno działać :slight_smile:

@mariusz193
Przeczytałem wszystkie wątki (których odnośnie tego zadania nie ma jednak za wiele), odpowiedzi nie znalazłem - dlatego napisałem posta.
Treść zadania również czytałem dziesiątki razy i nie do końca byłem pewien, czy dobrze je zrozumiałem.
Nie byłem pewien czy w przypadku przejścia do nowej linii, ale braku zera na końcu - powinno się zakończyć sumowanie zestawu danych - czy też kontynuować do napotkania zera przed znakiem nowej linii.
Tym niemniej, uwzględniłem jeden mały detal w stosunku do załączonego kodu i po wielu godzinach jest AC :slight_smile:

@masakra1112
Kilka uwag.

  1. Jak piszesz w C++ to używaj struktur z C++ - np. vector zamiast tablicy. Masz pewność, że liczb będzie mniej niż 100000?
  2. Po co w ogóle Ci tablica? Przecież zapisujesz do niej, od razu czytasz i nic z nią więcej nie robisz.

Zamiast:

int i=0;
liczby [i] = a;
suma = suma + liczby[i];
i++;

napisz:

suma = suma + a;

Krócej i wiadomo o co chodzi.

  1. Nie musisz sprawdzać żadnego getchar. Jest napisane, że zestaw kończy się cyfrą 0 i jest to wystarczające (if (a == 0) break)

  2. Nie potrzebujesz else'a. Jak wejdzie w ifa to zrobi break więc nie wejdzie w else'a, a jak nie wejdzie w ifa to wykona część po nim. Wystarczy zatem:

    if(a == 0) break;
    suma = suma + a;

  3. suma = suma + a; to inaczej suma += a

  4. Przykład dla którego miałeś błędny wynik:

    0
    1 0
    0
    1 0
    0
    1 0

który to powinien być:

0
1
0
1
0
1
3

@redysz
Dzięki za uwagi stricte “językowe”.
Moje ostatnie pytanie:
Czy w takim razie w jednym zestawie nie mogą występować dwa zera?? Przykładowo:
0 1 0 1 0
Czy to jest jeden zestaw czy już dwa?
Przyjąłem, że zer może być w jednym zestawie więcej niż jeden , wiec jako kryterium zakończenia wczytywania zestawu przyjąłem zero na końcu i znak nowej linii po nim.

Ja przyjąłem zero za koniec zestawu i dostałem poprawną odpowiedź także w zestawie nie ma zera, a jest tyklko na końcu.