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.
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.
przenieś
new
powyżej pętli while(n).
(i kawałek reszty tej pętli też)
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.
while(n--)
a potem uzywasz tego n wielokrotnie w petli... wez jakos sensownie nazwij te zmienne, to pomoze uniknac takich bledow
daj cout poza pętlę...
Zrobiłem porządek ze zmiennymi: https://ideone.com/U3ybR8
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?
Użyj debuggera. Nie umiesz? Naucz się a dopiero potem wróć do programowania.
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