رسم الأشكال (مربع)، رسم أي حرف مثلا:( X,Z,N,E,F)

وقت القراءة: 4 دقائق 153 مشاهدة

تعد الحلقات المتداخلة في لغة C++ أداة قوية لرسم أشكال مختلفة إلى شاشة المخرجات. باستخدام الحلقات المتداخلة، يمكننا التكرار على أبعاد متعددة وطباعة أحرف مختلفة لإنشاء أنماط مختلفة.

مثال 1:

#include <iostream>

using namespace std;

int main()
{
    for (size_t i = 1; i <= 10; i++)
    {
        for (size_t j = 1; j <= 10; j++)
        {
            if (i == 1 || i == 10)
                cout << "*";
            else if (j == 1 || j == 10)
                cout << "*";
            else
                cout << " ";
        }
        cout << endl;
    }

    return 0;
}

يطبع هذا الرمز مربعًا مجوفًا من النجوم إلى شاشة المخرجات. تتكرر حلقة for الخارجية من 1 إلى 10 مرات، وتتكرر حلقة for الداخلية من 1 إلى 10مرات.

الـ if داخل الحلقة الداخلية تتحقق مما إذا كانت قيمة i تساوي 1 أو 10، أو إذا كانت قيمة j تساوي 1 أو 10. إذا تم استيفاء أي من هذه الشروط، يقوم البرنامج بطباعة نجمة إلى شاشة المخرجات وبخلاف ذلك، يقوم البرنامج بطباعة مسافة.

فيما يلي شرح خطوة بخطوة لما يحدث عند تشغيل هذا البرنامج:

  1. يعرّف البرنامج متغيرين إثنين i و jويعطيهما قيمة بدائية تساوي 1.
  2. يبدأ البرنامج بحلقة الدوران الخارجية for.
  3. الشرط في الحلقة الخارجية يتحقق إذا كانت قيمة المتغير i أقل أو تساوي 10. إذا كانت كذلك، ينتقل إلى الحلقة الداخلية.
  4. الشرط في الحلقة الداخلية يتأكد ما إذا كانت قيمة المتغير j أقل أو تساوي 10. إذا كانت كذلك، يطبع البرنامج نجمة إلى شاشة المخرجات إذا كانت قيمة i تساوي 1 أو 10، أو إذا كانت قيمة j تساوي 1 أو 10. وبخلاف ذلك، يقوم البرنامج بطباعة مساحة إلى شاشة المخرجات.
  5. الحلقة الداخلية تقوم بزيادة قيمة المتغير j بمقدار 1.
  6. تقوم الحلقة الداخلية بتكرار الخطوات 4 إلى 5 حتى تصبح قيمة المتغير j أكبر من 10.
  7. بعد انتهاء حلقة for الداخلية، يقوم البرنامج بطباعة حرف السطر الجديد إلى شاشة المخرجات.
  8. حلقة for الخارجية تقوم بزيادة قيمة المتغير i بمقدار 1.
  9. تقوم الحلقة الخارجية بتكرار الخطوات 3 إلى 8 حتى تصبح قيمة المتغير i أكبر من 10.

مخرجات البرنامج تكون كالتالي:

**********
*        *
*        *
*        *
*        *
*        *
*        *
*        *
*        *
**********

مثال 2:

إذا أردنا طباعة حرف مثل X إلى شاشة المخرجات، نتوقع الشكل التالي:

*   *
 * * 
  *  
 * * 
*   *

نحن بحاجة إلى وضع أساس للمنطق المُستخدم.
لكي نفهم كيف يمكننا وضع النجوم كما في الشكل السابق، دعونا نعرضها بهذه الطريقة:

/*
 1 2 3 4 5
1* * * * *
2* * * * *
3* * * * *
4* * * * *
5* * * * *
*/

الآن دعونا نفكر في هذا الشكل، عندما يلتقي العمود بالصف نحصل على نجمة، لذلك نحتاج إلى حلقة تمر عبر جميع نقاط الالتقاء بين كل صف وعمود ونحتاج إلى شرط if لتحديد مواقعنا الدقيقة لصنع خطين قطريين متقاطعين ليشكلا شكل حرف X.

كل هذا ممثل في الكود التالي:

#include <iostream>

using namespace std;

int main()
{
    for (size_t i = 1; i <= 5; i++)
    {
        for (size_t j = 1; j <= 5; j++)
        {
            if (i == j || j == 6-i)
                cout << "*";
            else
                cout << " ";
        }
        cout << endl;
    }

    return 0;
}

مثال 3:

من خلال فهم كيف تصطف النجوم هنا:

/*
 1 2 3 4 5 
1* * * * * 
2* * * * * 
3* * * * * 
4* * * * * 
5* * * * * 
*/

يمكننا التفكير في طرق متعددة للتعامل مع الكود الخاص بنا لإنتاج حروف وأشكال مختلفة.

إنظر إلى هذا البرنامج:

#include <iostream>

using namespace std;

int main()
{
    for (size_t i = 1; i <= 5; i++)
    {
        for (size_t j = 1; j <= 5; j++)
        {
            if (j == (6) - i || i == 1 || i == 5)
                cout << "*";
            else
                cout << " ";
        }
        cout << endl;
    }

    return 0;
}

خمّن ما هذا الشكل؟!

المخرجات:

*****
   *
  *  
 *   
*****

مثال 4:

الآن دعونا نجعل شكلنا أكثر تعقيدًا

**********
**      **
* *    * *
*  *  *  *
*   **   *
*   **   *
*  *  *  *
* *    * *
**      **
**********

من خلال تطبيق هذا البرنامج الذي لا يختلف عن الأمثلة السابقة نحصل على الشكل الأخير.

#include <iostream>

using namespace std;

int main()
{
    for (size_t i = 1; i <= 10; i++)
    {
        for (size_t j = 1; j <= 10; j++)
        {
            if (i == j || j == 11 - i || i == 1 || i == 10 || j == 1 || j == 10)
                cout << "*";
            else
                cout << " ";
        }
        cout << endl;
    }

    return 0;
}

 

مشاركة هذا

رسم الأشكال (مربع)، رسم أي حرف مثلا:( X,Z,N,E,F)

Or copy link

المحتوى
Arabic