У C++ можна порівнювати значення за допомогою операторів порівняння.
| Порівняння | Оператор |
|---|---|
| дорівнює | == |
| не дорівнює | != |
| менше | < |
| менше або дорівнює | <= |
| більше | > |
| більше або дорівнює | >= |
Результат цих порівнянь завжди є булевим значенням (англ. Boolean):
int a{3};
bool eq1 = a != 4; // true
bool eq2 = a > 5; // false
Оператори == та != перевіряють, чи одне значення дорівнює іншому, чи ні, відповідно.
Ось кілька поширених прикладів:
bool eq3 = 2 == 3; // false, integer comparison
bool eq4 = 2.1 != 2.2; // true, float comparison
bool eq5 = "hello" == "hello"; // true, string comparison
Інші оператори перевіряють, чи одне значення більше за (>), більше або дорівнює (>=), менше за (<) і менше або дорівнює (<=) іншому значенню.
Таке порівняння доступне для чисел і рядків тексту (англ. string).
Під час порівняння рядків тексту використовується порядок словника (його також називають лексикографічним порядком).
bool eq6 = 2 > 3; // false, integer comparison
bool eq7 = 1.2 < 1.3; // true, float comparison
bool eq8 = "Hello" < "World"; // true, string comparison
Умовні конструкції в C++ схожі на умовні конструкції в інших мовах.
Базовим типом будь-якої умовної операції є тип bool, який може мати значення true або false.
Умовні конструкції часто використовують як механізми керування потоком, щоб перевіряти різні умови.
Можна використати умовну конструкцію if, яка виконує свій код, якщо відповідна умова true, ось так:
std::string value{"val"};
if (value == "val") {
return "was val";
}
У сценаріях із більш ніж одним випадком багато умовних конструкцій if можна обʼєднати в ланцюжок за допомогою конструкцій else if та else.
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
Починаючи з C++17, умовні конструкції if також можуть містити коротку інструкцію ініціалізації, яку можна використати для ініціалізації однієї або кількох змінних для конструкції if. Наприклад:
int num{7};
if (int v{2 * num}; v > 10) {
return v;
} else {
return num;
}
// => 14
Примітка: будь-які змінні, створені в ініціалізації, не можна використовувати після завершення умовної конструкції if.
У цій вправі ми напишемо трохи коду, який допоможе нам підготуватися до купівлі транспортного засобу.
На нас чекають три завдання: визначити, чи потрібне посвідчення водія, допомогти вибрати між двома транспортними засобами та оцінити прийнятну ціну вживаного транспортного засобу.
Деякі види транспортних засобів вимагають посвідчення водія для керування ними.
Припустімо, що посвідчення потребують лише види "car" і "truck", а всім іншим можна керувати й без посвідчення.
Реалізуйте функцію needs_license(kind), яка приймає вид транспортного засобу як рядок тексту (англ. string) і повертає булеве значення (англ. Boolean), яке вказує, чи потрібне посвідчення водія для цього виду транспортного засобу.
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
Оцінімо доступні нам варіанти транспортних засобів.
Нам вдалося звузити вибір до двох варіантів, але потрібна допомога, щоб ухвалити остаточне рішення.
Для цього реалізуйте функцію choose_vehicle(option1, option2), яка приймає два транспортні засоби як аргументи й повертає рішення, що містить варіант, який іде першим у лексикографічному порядку.
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."
Повернутий рядок тексту має відповідати шаблону "<CHOSEN_VEHICLE> is clearly the better choice.", де <CHOSEN_VEHICLE> - це обраний варіант із переданих аргументів.
Тепер, коли ми ухвалили рішення, хочеться переконатися, що в автосалоні нам дадуть справедливу ціну. Оскільки ми збираємося купити вживаний транспортний засіб, ціна залежить від того, який він старий. Для приблизної оцінки припустімо: якщо транспортному засобу менше ніж 3 роки, він коштує 80% від початкової ціни, яку мав, коли був новим. Якщо йому щонайменше 10 років, він коштує 50%. Якщо транспортному засобу щонайменше 3 роки, але менше ніж 10 років, він коштує 70% від початкової ціни.
Реалізуйте функцію calculate_resell_price(original_price, age), яка застосовує цю логіку за допомогою if, else if і else (є й інші способи, якщо є бажання потренуватися).
Вона приймає початкову ціну й вік транспортного засобу як аргументи та повертає орієнтовну ціну в автосалоні.
calculate_resell_price(1000, 1)
// => 800
calculate_resell_price(1000, 5)
// => 700
calculate_resell_price(1000.0, 15)
// => 500
Зауваження: повернене значення має тип
double.
Зареєструйтеся на Exercism, щоб вивчати й опановувати C++, а також 19 концепцій100 вправ та справжнє наставництво від людей, і все це безкоштовно.