Kurzusok
/
C++
C++
/
Feladatok
/
Szabadúszói díjak
Szabadúszói díjak

Szabadúszói díjak

Tanulófeladat

Bevezetés

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.

Egész számok

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.

Lebegőpontos számok

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.

Aritmetika

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.

Értékadó operátor

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.

Utasítások

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:

  • A napi díj az óradíj nyolcszorosa.
  • Egy hónapban 22 számlázható nap van.

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%).

1. Számítsd ki a napi díjat egy óradíj alapján

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.

2. Számítsd ki a kedvezményes árat

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.

3. Számítsd ki a havi díjat egy óradíj és egy kedvezmény alapján

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.

4. Számítsd ki a teljes munkanapok számát egy költségkeret, egy óradíj és egy kedvezmény alapján

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.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C++ Exercism

Készen állsz elkezdeni a(z) Szabadúszói díjak feladatot?

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.