في C++، يمكنك مقارنة القيم باستخدام عوامل المقارنة.
| المقارنة | العامل |
|---|---|
| يساوي | == |
| لا يساوي | != |
| أصغر من | < |
| أصغر من أو يساوي | <= |
| أكبر من | > |
| أكبر من أو يساوي | >= |
نتيجة هذه المقارنات هي دائمًا قيمة منطقية:
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
تتحقق العوامل الأخرى مما إذا كانت قيمة أكبر من (>) أو أكبر من أو تساوي (>=) أو أصغر من (<) أو أصغر من أو تساوي (<=) قيمة أخرى.
هذا النوع من المقارنة متاح للأعداد والسلاسل النصية.
وعند مقارنة السلاسل النصية، يُتبع الترتيب القاموسي (المعروف أيضًا بالترتيب المعجمي).
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) التي تأخذ نوع المركبة كسلسلة نصية وتُرجع قيمة منطقية تشير إلى ما إذا كنت بحاجة إلى رخصة لهذا النوع من المركبات.
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 تمرين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.