اذهب إلى المحتوى
  • 0

الحلقات المتداخلة

الشيخ المختار الشنقيطس

السؤال

السلام عليكم ورحمة الله،

مرحبا شباب، لدي استشكال في فهم هذه المعادلة قليلا، لقد وجدتها في احدى التحديات على موقع هرموش 

الستشكال هنا:

for (int i = 1; i <= n; i++) {
      for (int k = 1; k <= n - i; k++) {
        System.out.print(" ");
      }
      System.out.print("*");
      for (int j = 1; j < (i * 2) - 1; j++) {
        System.out.print("*");
      }
      System.out.println();
    }

وخاصة 


      for (int j = 1; j < (i * 2) - 1; j++) {
        System.out.print("*");
      }

وشكرا لكم 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

وعليكم السلام، أهلا بك،

الكود يستخدم لطباعة شكل هرمي باستخدام الرمز * كالآتي:

5f5a5da7c8c41_Annotation2020-09-10190839.png.3a77bbec687558c67f1aae2baeded959.png

لديك ثلاثة حلقات for تستخدم لطباعة الشكل بالترتيب التالي:

  • الحلقة الأولى الأساسية: 
for (int i = 1; i <= n; i++)

وهي تقوم بتكرار مابداخلها عدد n مرة وتستخدم لطباعة طوابق الشكل الهرمي اعتماداً على قيمة n (عدد الطوابق).

  • الحلقة الثانية:
for (int k = 1; k <= n - i; k++){
	System.out.print(" ");
}

وتستخدم لعمل المسافات في البداية قبل طباعة النجوم المستخدمة لعمل الشكل الهرمي، ويلاحظ أنها تتكرر n - i مرة، أي تتم طباعة المسافات اعتماداً على قيمة i (تعداد الطابق الهرمي) بحيث تتم طباعة المسافات بشكل متناقص كل مرة عند طباعة طابق هرمي جديد من الأعلى للأسفل.

  • الحلقة الثالثة:
System.out.print("*");
for (int j = 1; j < (i * 2) - 1; j++) {
    System.out.print("*");
}

بعد إكمال طباعة المسافات، تتم طباعة نجم وحيد أولاً ومن ثم طباعة عدد زوجي من النجوم كل مرة ابتداءً بعدد 2 من النجوم في الطابق الثاني (أسفل العلوي) ومن ثم بشكل متزايد 4، 6، 8 لدى كل طابق جديد. ويمكن كذلك تبسيط الحلقة الثالثة بالشكل التالي:

for (int j = 1; j < (i * 2); j++) {
     System.out.print("*");
}

بحيث يتم الاستغناء عن طباعة النجم المنفرد في البداية ومن ثم طباعة عدد فردي من النجوم في كل طابق بعدد نجم وحيد في الطابق العلوي ومن ثم  3، 5، 7 في الطوابق اللاحقة وهكذا.

وأخيراً بعد إكمال طباعة النجوم يتم عمل سطر جديد في نهاية الحلقة للطابق الجديد في الهرم باستخدام السطر:

System.out.println();

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...