A C++ beépített számtípusai egész és lebegőpontos számokra oszthatók.
Az egész számok olyan egész értékek, mint a 0, 691 vagy -2.
A lebegőpontos számok tizedesponttal rendelkező számok, például 6.02214076, 0.1 vagy -1.616.
A következő példa négy különböző változó deklarációját és inicializálását mutatja be
int m_morales{9241}; // base 10: 0-9
int a_apaec{0x24CD}; // base 16: 0-9 and A-F
int m_gargan{0b10010000011001}; // base 2: 0-1
int b_reilly{022031}; // base 8: 0-7
// Leading with a 0 not the letter o.
Amikor értéket adsz egy int változónak, azt közvetlenül egy literállal teheted meg.
A literál egy beégetett szám, például 9241.
A reprezentáció több számrendszeréhez különböző egész literálok tartoznak.
A tízes számrendszerbeli egész literálok a leggyakoribbak, és a 0-tól 9-ig terjedő számjegyeket használják.
Egy speciális előtag, például a 0x hozzáadásával más számrendszereket is használhatsz.
A fenti példa a 9241 számot mutatja be a négy reprezentációjával és előtagjával.
Minden változó ugyanarra az értékre van inicializálva.
A különböző számrendszerekről bővebben egy kis útmutatóban olvashatsz.
Az olvashatóság megkönnyítése érdekében aposztrófokkal választhatod el a számjegyeket.
9'241 ugyanaz, mint 0b0100'100'0001'1001 vagy 92'4'1.
A lebegőpontos literáloknak két formája van.
A szemléletes 0.0024 mellett használható a tudományos jelölése is: 2.4e-3.
A leggyakoribb lebegőpontos típus a double.
A C++ támogatja a +, -, *, /, ( és ) operátorokat, valamint a %-ot kifejezések létrehozásához.
Két egész szám közötti művelet eredménye szintén egész szám.
Az 5 / 2 eredménye 2 lesz.
Ha a részt vevő típusok egyike lebegőpontos, az eredmény is lebegőpontos lesz.
Az 5.0 / 2 és az 5 / 2.0 eredménye 2.5 lesz.
A % a maradék operátor, és egy egész osztás maradékát adja vissza: 5%3 eredménye 2.
Az értékadó operátor egy literált rendel a változóhoz. Mindig jobbról balra történik, soha nem fordítva.
int length = 5;
int width = 2;
length = width;
Itt az 5 egész értéket a length változónak adjuk értékül.
Majd a 2 egész értéket a width változónak adjuk értékül.
Végül a width értéke átmásolódik a length változóba, és a korábbi 5 érték elveszik.
Vedd figyelembe azt is, hogy csak az értékadás pillanatában rendeljük a width értékét a length változóhoz.
Ezért ha a width értéke később megváltozik, az nem befolyásolja a length által felvett értéket.
Az értékadó operátor kombinálható a többi operátorral (aritmetikai és bitműveleti), ezek az úgynevezett compound assignment operátorok: +=, -=, *=, /=, %=.
Ezek az operátorok úgy módosítják a változó aktuális értékét, hogy műveletet végeznek rajta.
// we start with 0 people
int people{};
// we need 0 eggs
int eggs{};
// two people joined:
people += 2;
// people is now 2
// let's add 3 eggs per person
eggs += 3 * people;
// eggs is now 6
A people és eggs változók 0-ra vannak inicializálva.
Ezután a people változó meglévő 0 értékéhez hozzáadjuk a 2 egész értéket, és az eredményt visszaírjuk a people változóba.
A people most 2 lesz.
Később személyenként 3 tojást adunk hozzá, ami összesen 6 tojást eredményez.
Most adjuk hozzá ezt a 6-ot az eggs változó meglévő 0 értékéhez, és az eredményt írjuk vissza az eggs változóba.
Az eggs most 6 lesz.
A megfelelő kifejezés a people = people + 2 és az eggs = eggs + (3 * people) lenne.
Ebben a feladatban olyan kódot írsz, amely segít egy szabadúszónak kommunikálni egy projektmenedzserrel. A feladatod, hogy néhány segédfüggvényt készíts a napi és a havi díj gyors kiszámításához, opcionálisan egy megadott kedvezménnyel.
Először rögzítsünk néhány szabályt a szabadúszó és a projektmenedzser között:
Néha a szabadúszó kedvezményt ajánl a napi díjából (például a leghűségesebb ügyfeleinek vagy nonprofit ügyfeleknek).
A kedvezményeket százalékot jelentő tizedes törtekként modellezzük, például 25.0 (25%).
Készíts egy daily_rate nevű függvényt, amely egy paraméterként kapott óradíjból kiszámítja a napi díjat.
A szerződés szerint egy nap 8 számlázható órából áll.
daily_rate(60)
// => 480.0
A visszaadott napi díj típusa double legyen.
Készíts egy apply_discount függvényt, amely kiszámítja a kedvezmény utáni árat.
Két paramétert várjon: az eredeti árat és a kedvezmény mértékét százalékban.
apply_discount(150, 10)
// => 135.0
A visszaadott érték mindig double típusú legyen, és semmilyen módon ne legyen kerekítve.
Készíts egy monthly_rate függvényt, amely kiszámítja a kedvezményes havi díjat.
Két paramétere legyen: egy óradíj és a kedvezmény százalékban.
monthly_rate(77, 10.5)
// => 12130
A visszaadott havi díjat felfelé kell kerekíteni (vedd a felső egészrészét) a legközelebbi egész számra.
Készíts egy days_in_budget függvényt, amely egy költségkeretet, egy óradíjat és egy kedvezményt kap, és kiszámítja, hogy hány teljes munkanapra elegendő ez.
days_in_budget(20'000, 80, 11.0)
// => 35
A visszaadott napok számát lefelé kell kerekíteni (vedd az alsó egészrészét) a következő egész számra.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C++ nyelvet 19 fogalom100 feladat segítségével, valódi emberi mentorálással, mindez ingyen.