A C++-ban összehasonlító operátorokkal hasonlíthatsz össze értékeket.
| Összehasonlítás | Operátor |
|---|---|
| egyenlő | == |
| nem egyenlő | != |
| kisebb | < |
| kisebb vagy egyenlő | <= |
| nagyobb | > |
| nagyobb vagy egyenlő | >= |
Ezeknek az összehasonlításoknak az eredménye mindig egy Boolean érték:
int a{3};
bool eq1 = a != 4; // true
bool eq2 = a > 5; // false
A == és a != operátorok rendre azt ellenőrzik, hogy egy érték egyenlő-e egy másikkal vagy sem.
Íme néhány gyakori példa:
bool eq3 = 2 == 3; // false, integer comparison
bool eq4 = 2.1 != 2.2; // true, float comparison
bool eq5 = "hello" == "hello"; // true, string comparison
A többi operátor azt vizsgálja, hogy az egyik érték nagyobb-e (>), nagyobb vagy egyenlő-e (>=), kisebb-e (<), illetve kisebb vagy egyenlő-e (<=), mint egy másik érték.
Ez a fajta összehasonlítás számokra és stringekre érhető el.
Stringek összehasonlításakor a szótári sorrendet (más néven lexikográfiai sorrendet) követjük.
bool eq6 = 2 > 3; // false, integer comparison
bool eq7 = 1.2 < 1.3; // true, float comparison
bool eq8 = "Hello" < "World"; // true, string comparison
A C++ feltételes szerkezetei hasonlóak más nyelvekéhez.
Bármely feltételes művelet mögöttes típusa a bool típus, amelynek értéke true vagy false lehet.
A feltételes szerkezeteket gyakran vezérlési mechanizmusként használjuk különböző feltételek ellenőrzésére.
Használhatsz if utasítást, amely akkor futtatja a kódját, ha a mögöttes feltétel true, például így:
std::string value{"val"};
if (value == "val") {
return "was val";
}
Ha egynél több esetről van szó, több if utasítást is összefűzhetsz az else if és az else utasításokkal.
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
A C++17 óta az if utasítások tartalmazhatnak egy rövid kezdőértéket megadó utasítást is, amellyel egy vagy több változót inicializálhatsz az if utasításhoz.
Például:
int num{7};
if (int v{2 * num}; v > 10) {
return v;
} else {
return num;
}
// => 14
Megjegyzés: a kezdőértékadásban létrehozott változókra az if utasítás végén túl már nem lehet hivatkozni.
Ebben a feladatban olyan kódot írsz, amely segít felkészülni egy jármű megvásárlására.
Három részfeladat vár rád: az egyikben eldöntöd, hogy kell-e jogosítvány, a másikban segítesz választani két jármű közül, a harmadikban pedig megbecsülöd egy használt jármű elfogadható árát.
Egyes járműfajták vezetéséhez jogosítvány kell.
Tételezd fel, hogy csak a "car" és a "truck" típushoz kell jogosítvány, minden más vezethető jogosítvány nélkül.
Valósítsd meg a needs_license(kind) függvényt, amely a jármű fajtáját stringként kapja, és egy Boolean értékkel tér vissza, ami megmutatja, hogy szükség van-e jogosítványra az adott járműfajtához.
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
Mérlegeled a rendelkezésre álló járműveket.
Sikerül kettőre szűkítened a kört, de segítségre van szükséged a végső döntéshez.
Ehhez valósítsd meg a choose_vehicle(option1, option2) függvényt, amely két járművet kap argumentumként, és egy döntést ad vissza, amelyben az szerepel, amelyik lexikográfiai sorrendben előrébb van.
choose_vehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
choose_vehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
A visszaadott string kövesse a „<CHOSEN_VEHICLE> is clearly the better choice.” mintát, ahol a <CHOSEN_VEHICLE> a kapott argumentumok közül kiválasztott opció.
Most, hogy döntöttél, szeretnéd biztosítani, hogy tisztességes árat fizetsz a kereskedésben. Mivel használt járművet szeretnél venni, az ár attól függ, milyen idős a jármű. Durva becsléshez tételezd fel, hogy ha a jármű kevesebb mint 3 éves, az új kori eredeti ára 80%-ába kerül. Ha legalább 10 éves, akkor 50%-ába. Ha a jármű legalább 3 éves, de kevesebb mint 10 éves, az eredeti ár 70%-ába kerül.
Valósítsd meg a calculate_resell_price(original_price, age) függvényt, amely ezt a logikát if, else if és else segítségével alkalmazza (más megoldások is léteznek, ha gyakorolni szeretnél).
Az eredeti árat és a jármű korát kapja argumentumként, és a kereskedésben becsült árat adja vissza.
calculate_resell_price(1000, 1)
// => 800
calculate_resell_price(1000, 5)
// => 700
calculate_resell_price(1000.0, 15)
// => 500
Megjegyzés: a visszatérési érték típusa
double.
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.