Witam wszystkich, zadanie niby proste ale sędzia wyrzuca mi WA… ktoś coś widzi czego ja nie zauważyłem? moj kod: kod38, zadanie: Liczba monet24.
Pozdrawiam
created
last reply
- 10
replies
- 839
views
- 6
users
- 2
likes
- 4
links
Witam wszystkich, zadanie niby proste ale sędzia wyrzuca mi WA… ktoś coś widzi czego ja nie zauważyłem? moj kod: kod38, zadanie: Liczba monet24.
Pozdrawiam
Cześć
A zechciałbyś zerknąć na mój kod: https://ideone.com/mYoxaK26
Zaokrąglanie przy wyświetlaniu i rzutowanie na inta, to dwie różne sprawy.
Jak wyświetlisz printf("%.20f", d) to nadal będzie 2.03…?
Warto też podejrzeć wartość takiej zmiennej w debuggerze.
Przy wyświetlaniu wykonywane jest odpowiednie zaokrąglenie, więc wartość 2.02999 - > 2.03.
Podczas rzutowania na inta, część dziesiętna jest odcięta a całkowita trafia do inta bez żadnego zaokrąglania. Dlatego 1.999999999999999999 to wciąż 1 podczas rzutowania.
I dlatego tak trudne są zadania, gdzie wartości zmiennoprzecinkowe i całkowite przeplatają się nawzajem.
dzięki, postaram sie pamiętać… Pierwszy raz mi taki numer sie przytrafił… Teoretycznie o tym wiedziałam, ale w praktyce jakoś nie wychodziło do tej pory
Dokładnie tak, z tym, że w/w sposób to jest zaokrąglanie, więc można też tak:
int i = round (100 * d);
lub w tym zadaniu:
char znak; //przecinek
int zlote, grosze;
cin >> zlote >> znak >> grosze;
Zaleta, używamy zmiennych całkowitych, zamiast rzeczywistrych, ale ten sposób nie zadziała dla np takich danych:
4,5 - będzie wczytane 4 złote i 5 groszy, zamiast 50.
4, w/w program wywali się
4 w/w program wywali się
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
PP0504B - StringMerge - w języku C | Zbiór zadań | 5 | 185 | Jun '24 |
FR_08_11 - Gra w bańki | Zbiór zadań | 1 | 148 | Jun '24 |
MBPROB01 - History version in plaintext pl.spoj.com | Zbiór zadań | 6 | 151 | Jul '24 |
TOPSORTL - Porządek leksykograficzny w grafie | Zbiór zadań | 3 | 125 | Jul '24 |
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 124 | Feb 1 |