Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 10. 12. 2011 16:41

Shalinka
Příspěvky: 71
Reputace:   
 

Zaokrouhlování

Dobrý den, mám problém s funkcí na zaokrouhlování, potřebuji funkci, která mi zaokrouhlí desetínné číslo na číslo celé, např. číslo 3.6 se zaokrouhlí na 4 a číslo 3.4 se zaokrouhlí na 3.
Funkce vypadá takto, ale při překladu mi to hází chybu:"expected expression before 'float'" a to konkrétně na řádku obshující cislo = float(int(cislo *  10 + 0.5)) / 1


int zaokrouhlit(float cislo)
{
    cislo = float(int(cislo *  10 + 0.5)) / 10;
    return cislo;
}

Poradil by mi někdo jak tuto funkci opravit?

Offline

 

#2 10. 12. 2011 16:48

FailED
Příspěvky: 1255
Reputace:   42 
 

Re: Zaokrouhlování

Ahoj,

cislo se předává hodnotou, nemáš do čeho zapisovat.

Offline

 

#3 10. 12. 2011 16:58

Shalinka
Příspěvky: 71
Reputace:   
 

Re: Zaokrouhlování

↑ FailED:
pořád mi to hlásí tu stejnou chybu :(

Offline

 

#4 10. 12. 2011 17:41 — Editoval frank_horrigan (10. 12. 2011 17:48)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Zaokrouhlování

Ahoj,
co jsi to udělala s tím přetypováním?

já bych vyrobil asi něco takovéhoto:



EDIT: tohle je v C úplně špatně:

return float(int(cislo *  10 + 0.5)) / 10;

pochopil bych zápis return (float) ((int)((cislo * 10 +0.5)/10));, tedy vypočtu cislo * 10 + 0.5, vysledek vydelmi deseti, a cele to přetypuju na int, a nakonec to celé přetypuju na float, a vrátím. Špatně už je jenom to přetypování na float, když máš vracet int ;)


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson