الدرس 2 من 10

المتغيّرات والأنواع

هدف الدرس

الأنواع وفخّ القسمة الصحيحة

01

الشرح

في C++ يُعلن كل متغيّر نوعه مرّة واحدة ويبقى عليه: int lives = 3; عدد صحيح، وdouble speed = 4.5; عدد عشري، وchar rank = 'S'; حرف واحد بين علامتين مفردتين، وbool alive = true; صواب أو خطأ، وstd::string name = "ليان"; نصّ بين علامتين مزدوجتين من <string>. ومن هذا الدرس نكتب std:: صراحةً بدل using namespace std; كما يفعل أغلب الكود الاحترافي: يتّضح من أين جاء كل اسم، ولا يتصادم اسم من المكتبة مع اسم من أسمائك.

والنوع يحدّد الحساب نفسه: القسمة بين عددين صحيحين تبقى صحيحة وتُسقط الكسر بصمت، فـ 7 / 2 تساوي 3، و45 / 60 * 100 تساوي صفرًا لا 75، لأن 45 / 60 صارت صفرًا قبل أن يبدأ الضرب. والعلاج أن تحوّل أحد الطرفين إلى عشري قبل القسمة: static_cast<double>(total) / count، أو أن تضرب قبل أن تقسم. والفخّ أن تحوّل بعد فوات الأوان: static_cast<double>(7 / 2) تعطي 3.0، لأن الكسر ضاع قبل التحويل.

وstd::cout يطبع bool رقمًا: 1 للصواب و0 للخطأ. ضع std::boolalpha قبله في السلسلة فيطبع true أو false. و"\n" في آخر النصّ تنزل سطرًا كما تفعل std::endl.

02

المطلوب

أصلح double average(int total, int count) لتُرجع المتوسّط عشريًّا: average(45, 6) تساوي 7.5 لا 7. وأصلح int hpPercent(int hp, int maxHp) لتُرجع نسبة الصحة عددًا صحيحًا من 100: hpPercent(45, 60) تساوي 75 لا صفرًا. واكتب bool isLowHp(int hp, int maxHp) تُرجع true إن كانت النسبة أقلّ من 25. ثم أضف إلى main سطرًا ثالثًا: خطر: true من isLowHp(10, 60).

معايير التصحيح

6 معايير
  1. average(45, 6) تساوي 7.5 لا 7
  2. average مع قيم أخرى ومع السالب
  3. hpPercent(45, 60) تساوي 75 لا صفرًا
  4. hpPercent مع الصحة الكاملة والصفر والكسر
  5. isLowHp: أقلّ من 25% خطر، و25% فأكثر لا
  6. طُبعت الأسطر الثلاثة: 7.5 و 75% و true
main.cpp
المخرجاتC++17 · GCC 9 · Judge0

يُترجَم الكود ويعمل على السيرفر…

–/6

يُترجَم الكود ويعمل على السيرفر…

6 معايير في بطاقة «المطلوب».