
C++ jak vypnout výpis v semilogaritmickém tvaru
Ahoj,
začínám programovat a rozhodl jsem se otestovat své dosavadní znalosti a naprogramovat kalkulačku odpisů. Logicky mi vše funguje. Možná mi vytknete, že to mám zbytečně složitě, ale dělám to tak, abych tomu sám rozuměl :D
Teď k mému problému. Když mi program vypisuje větší čísla, tak si vypíšou v semilogaritmickém tvaru. Nevím, jak to obejít. Budu rád za každou radu.
Děkuji.
Už mi to jde. Změnil jsem proměnné z "int" na "long long" a použil header "iomanip". Potom jsem změnil "cout" na "stl::cout << std::fixed << std::setprecision(o) <<..." a vše více méně běží podle mých představ.
Díky za rady. :)
podla mna si urobil uplne kraviny, ale ok :)
(Napr. setprecision volaj len raz predtym).
P.S. a citaj si aj warningy, ono to neni len tak convertovat hore dole formaty, tie warningy to pise aby si na to daval pozor.
nevíš, co bych s tím mohl udělat, aby v těch varováních nebyl takový bordel prosím? Programuju teprve asi týden, tak se prosím nediv, že mám možná tak dementní otázky :)
//přikládám svůj kód...
17160
Napr.
OdpisRok01 = (cena * 20) / 100;
vsetko su integery, takze podla mna ked cena bude napr. 2, tak OdpisRok01 bude cista 0. Si si isty ze to je tak spravne?
takže to znamená, že si mám ty proměnné na začátku programu předefinovat na double nebo float? :)
Ved si ten program otestuj ze co sa stane ked zadas cena = 1, ze kolko bude OdpisRok01
P.S> a celociselne veci ako skupina apod samozrejme ostane ako integer. A mal by si si testovat uzivatelsky vstup, on tam uzivatel moze trebars napisat aj skupinu "bodni sa" :D
(neviem teraz zhlavy co urobi cin ked ma parsovat integer a uzivatel napise string, bud vrati 0 alebo hodi exception, alebo obe veci naraz, je to urcite napisane v referencii k cin, link na nejaku referenciu dal uz wikan vyssie, najdi si tam cin.
Ono jde o to, že by se to mělo vždy každé číslo zaokrouhlovat. Ale asi máš pravdu. Mám tam potom výchylky třeba 1KČ asi v důsledku těch haléřů. Takže když se rozhodnu pro proměnné double nebo float, tak musím upravit výpis na obrazovku a zaohrouhlování. Výpis upravím tak, že použiju printf.
To je to, co jsem zatím jakž takž pobral :)
A napr. ked niekde napises cena * 22.25 tak aj vysledok toho nasobenia bude uz float, ptz cislo 22.25 je float. (a desatinne cislo * integer = desatinne cislo)
Naprogramoval si to proste uplne nahodne ptz si od zaciatku nemal jasno co kde mas ulozene v jakom formate. Preto sa ma najprv studovat, az potom nieco programovat. Aby z toho neliezlo ze mam 500eur a kupil som pracku za 300eura a program napise ze mate este v penazenke 250eura :)
takže pokud to chápu správně... pro největší přesnost, tak mám dělat operace s čisly, které msjí stejný datový typ. A jelikož floor vrací float, tak mám vše předefinovat na float. Potom to bude přesně a správně...
Nevím, jestli to chápu správně
.. v tvojom pripade ked si tam chces ratat nejake domace pocty alebo maximalne milion Kcs alebo co, tak vpohode staci aj presnost floatu. Odchykla je tusim na 8.platnej cifre ci tak nejak (tiez to je jasne definovane u toho formatu, staci si dat do google slova float presnost a studovat - to je ta cinnost ktora je nutna pred vyvojom serioznych aplikacii).
jasný. Díky moc a promiň, že mám tak stupidní otázky. Ani jsem z toho nechtěl nějaký seriózní program. Spíš jenom něco na trénování a zlepšení se. Každopádně nastuduju :)
Díky moc :)
Uz len doplnim ze keby si tam pouzil na vsetky tie cisla double (s vynimkou tej skupiny ci co to ma byt celociselne 1-6), tak by tam bolo vsetko v double aj tie fcie potom vracaju double a nemal by si asi ziadne warningy.
Ano, to už jsem udělal včera nebo předevčírem :)
Děkuji moc. Hodně jsi mi pomohl :)