Chyba v kóde...začiatočník – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Chyba v kóde...začiatočník – C / C++ – Fórum – Programujte.comChyba v kóde...začiatočník – C / C++ – Fórum – Programujte.com

 

Anon
~ Anonymní uživatel
12 příspěvků
4. 11. 2015   #1
-
0
-

Zdravím, napísal som tento kód 

float suma;
int centy;
int cele;
printf("Zadaj sumu a ja ti ju napisem a zaroven aj vysklonujem:\n");
scanf("%f",&suma);
cele=(int)suma;
centy= (suma-cele)*100;

switch ((int)suma) {
    case 1:
        printf("%d euro",(int)suma);
        break;
    case 2 ... 4:
        printf("%d eura",(int)suma);
        break;

    default:
        printf("%d eur",(int)suma);
        break;

}
switch (centy) {
    case 1:
        printf(" a %d cent\n",centy);
        break;
    case 2 ... 4:
        printf(" a %d centy\n",centy);
        break;

    default:
        printf(" a %d centov\n",centy);
        break;
}

A keď zadám 5.56 tak dostanem 5.55...ak by ste mi vysvetlili ako to upraviť a prečo bol by som veľmi rád. Predom ďakujem. Som iba začiatočník.

Nahlásit jako SPAM
IP: 109.230.3.–
petrph0
Newbie
5. 11. 2015   #2
-
0
-

Jo, dost obvyklá chyba když se pokoušíš něco vytáhnout z desetinného čísla. Protože ono je uloženo ve float binárně, čili ne tak úplně přesně jak sis myslel . Řešení je několik, různě složitých.

Abys nemusel ten kód skoro celý měnit tak stačí ten řádek
centy= (suma-cele)*100;
změnit na
centy= ((suma-cele)+0.005)*100;

Nahlásit jako SPAM
IP: 88.100.206.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 107 hostů

Podobná vlákna

Chyba v zdrojovom kóde — založil ArcaneBeam13

Chyba v kode, neviem si rady — založil Rastislav

Pachy v kode — založil sn3d

Pomoc v kode python — založil Priwi

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý