الدرس 4 من 10

الحلقات

هدف الدرس

for و while وحلقة داخل حلقة

01

الشرح

for للتكرار بعدد تعرفه: for (int i = 1; i <= n; i++) ثلاثة أجزاء تفصلها فاصلتان منقوطتان: بداية العدّاد، وشرط يُفحص قبل كل دورة، وخطوة بعد كل دورة. وi++ تزيد العدّاد واحدًا، وtotal += i تضيف i إلى المجموع. وانتبه للحدّ: < مكان <= تُسقط الدورة الأخيرة بصمت.

وwhile (n != 0) للتكرار ما دام الشرط قائمًا، حين لا تعرف عدد الدورات مسبقًا: اقسم على 10 ما بقي في العدد شيء. أما do { ... } while (n != 0); فتفحص شرطها بعد الدورة لا قبلها، فتدور مرّة واحدة على الأقل. والفخّ حلقة لا يتغيّر فيها ما يفحصه شرطها: انسَ n /= 10 فتدور إلى الأبد، ويوقفها الخادم بعد ثوانٍ.

والحلقة داخل الحلقة ترسم الأشكال: الخارجية تمرّ على الأسطر، والداخلية ترسم السطر الواحد، وحدّها من عدّاد الخارجية: for (int i = 0; i < row; i++). ولكل حلقة عدّاد باسم مختلف.

02

المطلوب

أكمل int sumTo(int n) بـ for: مجموع الأعداد من 1 إلى n، وصفر إن كان n صفرًا أو سالبًا. وأكمل int countDigits(int n): عدد أرقام n بقسمته على 10 مرّة بعد مرّة، وللصفر رقم واحد، والسالب يُعدّ بلا إشارته: countDigits(-907) تساوي 3. ثم اطبع من main هذا الدرج وحده بحلقتين متداخلتين: # ثم ## ثم ### ثم ####، كلٌّ في سطر.

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

6 معايير
  1. sumTo(5) تساوي 15
  2. sumTo(1) و sumTo(100)
  3. sumTo للصفر والسالب صفر
  4. countDigits(12345) تساوي 5، و countDigits(7) تساوي 1
  5. countDigits: للصفر رقم واحد، والسالب بلا إشارته
  6. طُبع الدرج بأسطره الأربعة وحدها
main.cpp
المخرجاتC++17 · GCC 9 · Judge0

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

–/6

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

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