Zadanie ze spoja http://pl.spoj.com/problems/PP0604A/
Program świruje, pominąwszy złe wyniki, wypisuje ich za dużo. Nie mam pomysłu gdzie popełniłem błąd, proszę o pomoc.
spoj średnia arytmetyczna
- Rejestracja: dni
- Ostatnio: dni
- Postów: 7
- Rejestracja: dni
- Ostatnio: dni
Zastosuj while(t--) i usuń t-- z końca pętli, analogicznie z n. Co do złych wyników, to liczby zmiennoprzecinkowe wymagają fabs(). Błąd jest gdzieś jeszcze ale nie widzę gdzie.
- Rejestracja: dni
- Ostatnio: dni
przenieś
new
powyżej pętli while(n).
(i kawałek reszty tej pętli też)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 7
Poprawiłem wg wskazówek, teraz kod wygląda następująco.
https://ideone.com/rXTXhX
Wyniki fatalne. Dlaczego na wyjściu jest aż tyle danych? Powinny być 3 liczby.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Hong Kong
while(n--) a potem uzywasz tego n wielokrotnie w petli... wez jakos sensownie nazwij te zmienne, to pomoze uniknac takich bledow
- Rejestracja: dni
- Ostatnio: dni
daj cout poza pętlę...
- Rejestracja: dni
- Ostatnio: dni
- Postów: 7
Zrobiłem porządek ze zmiennymi: https://ideone.com/U3ybR8
- Rejestracja: dni
- Ostatnio: dni
Za każdym razem wyświetlaj wszystkie kluczowe zmienne (tzw. "dupa debugging"). Wtedy zobaczysz co masz źle.
Czyli zamień:
cout<<endl<<tab[nrnearest]<<endl;
na:
cout<<endl<<"number: " << number << ", amount: " << amount << ", test: " << test << ", average: " << average << ", nrnearest: " << nrnearest << ", tab[nrnearest]: " << tab[nrnearest]<<endl;
Oczywiście lepiej by było użyć debugera, ale rozumiem że jeszcze nie potrafisz?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
Użyj debuggera. Nie umiesz? Naucz się a dopiero potem wróć do programowania.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 7
Faktycznie, dzięki debuggerowi poszukiwanie dziury jest znacznie łatwiejsze, dzięki za konstruktywną krytykę.
Kod po usunięciu błędów http://ideone.com/lG1ROT