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

الرسم من خلال C++ باستخدام nested for loop

Mrim Bd

السؤال

ممكن أعرف ازاي ممكن ارسم مدفع رمضان بأبسط كود لاني غير متمكنة في اللغة ومطلوب مني رسمه باستخدام nested for 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

لانجيب عن أسئلة الامتحانات لكن سأقوم بتوضيح الفكرة الرئيسية،

قبل البدء في كتابة الكود، يجب فهم الفكرة الأساسية لرسم المدفع. يتكون المدفع من جزئين، الجزء الأول هو القاعدة والجزء الثاني هو الرأس. يحتوي الجزء الأول على عدة خطوط أفقية بأطوال مختلفة والجزء الثاني يحتوي على عدة خطوط مائلة.

بدايةً، يمكننا استخدام nested loop لرسم الجزء الأول من المدفع، حيث يمكن استخدام loop خارجي لرسم الخطوط الأفقية وloop داخلي لرسم الأطوال المختلفة للخطوط الأفقية. يمكن استخدام الدالة cout لطباعة الرموز المستخدمة في الرسم، مثل "*" أو "-" أو "|" وغيرها.

لرسم الجزء الثاني من المدفع، يمكن استخدام nested loop آخر، حيث يمكن استخدام loop خارجي لرسم الخطوط المائلة وloop داخلي لرسم الأطوال المختلفة للخطوط المائلة. يمكن استخدام الدالة cout لطباعة الرموز المستخدمة في الرسم، مثل "*" أو "-" أو "/" وغيرها.

يمكنك الآن البدء في كتابة الكود في لغة C++ باستخدام nested loop. يمكن استخدام loop خارجي للقاعدة وloop داخلي للرأس.

وفيما يلي مثال بسيط لرسم فانوس بمجرد إتقان هذه الفكرة يمكنك رسم أي شيء تريدينه:

#include <iostream>
using namespace std;

int main() {
    int size;
    cout << "Enter the size of the tree ";
    cin >> size;

    // Loop for drawing the tree
    for (int i = 0; i < size; i++) {
        // Loop for drawing the first part of the tree
        for (int j = 0; j < size-i-1; j++) {
            cout << " ";
        }
        for (int j = 0; j < i*2+1; j++) {
            cout << "*";
        }
        cout << endl;
    }

    // Loop for drawing the base of the tree
    for (int i = 0; i < size/2; i++) {
        for (int j = 0; j < size-2; j++) {
            cout << " ";
        }
        cout << "***" << endl;
    }
    return 0;
}

 

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

  • 0

لا داعي للذعر، الأمر بسيط عند فهم الطريقة وفهم الكود الذي يمكنك من تنفيذ ذلك، ففي البداية يجب عليك تقسيم المشكلة التي لديك إلى أجزاء وبدء العمل عليها تباعًا حتي تصلي لحل المشكلة، فلا تنظري أبدًا لمشكلة برمجية بكاملها بل قسميها إلى أجزاء.

يمكن استخدام nested for loop في لغة السي++ لرسم الأشكال المختلفة. لهذا الغرض، يتم استخدام loop داخلي لتحديد الصفوف والأعمدة وloop خارجي لتحديد عدد الصفوف.

في nested for loop ، يتم تضمين for loop داخل for loop آخر. يستخدم الـ for loop الخارجي لتكرار مرة أخرى داخليًا. بمعنى آخر، يتم تنفيذ الـ for loop الداخلي بأكمله مرة واحدة لكل تكرار من الـ for loop الخارجي.

على سبيل المثال، إذا أردتي رسم مثلث، يمكن استخدام nested for loop كالتالي:

#include <iostream>
using namespace std;

int main() {
int rows = 7;

for (int i = 1; i <= rows; ++i) {
  for (int j = 1; j <= i; ++j) {
    cout << "*";
  }
  cout << endl;
}

   return 0;
}

تم تعيين عدد الصفوف في هذا المثال إلى 7 باستخدام المتغير rows. يتم استخدام الـ loop الخارجي لتكرار العملية الداخلية بعدد الصفوف المحدد.

الـ loop الداخلي يتحكم في عدد الأعمدة. في هذا المثال، يتم استخدام loop داخلي للتحكم في عدد النجوم المطلوب طباعتها في كل صف.

إذا أردتي رسم مثلث مقلوب، يمكن تغيير اتجاه الطباعة بتغيير ترتيب الـ loop الداخلي والخارجي كالتالي:

#include <iostream>
using namespace std;

int main() {
int rows = 7;

for (int i = rows; i >= 1; --i) {
  for (int j = 1; j <= i; ++j) {
    cout << "*";
  }
  cout << endl;
}

   return 0;
}

هذا المثال يستخدم الـ loop الخارجي للعد من الصفوف الأعلى إلى الأسفل، والـ loop الداخلي للعد من الأعمدة من الأعلى إلى الأسفل في كل صف.

يمكن استخدام هذا النمط في الكثير من الرسومات الأخرى، ويمكن تعديل الشروط والمتغيرات المستخدمة في الـ loops للحصول على تأثيرات مختلفة.

بالنسبة للأشكال المعقدة

 الفكرة تكمن في تقسيم الشكل إلى عدة أجزاء أصغر، واستخدام nested loops لرسم كل جزء من هذه الأجزاء.

على سبيل المثال، إذا كنت تريد رسم شكل معقد يشبه شجرة، فيمكنك استخدام nested loops لرسم الشجرة كما يلي:

1- الجذع: يمكنك استخدام nested loop لرسم الجذع، حيث يتكون الجذع من عدة خطوط رأسية، يمكن رسمها باستخدام الدالة cout.

2- الأوراق: يمكنك استخدام nested loops آخر لرسم الأوراق، حيث يمكن استخدام loop خارجي لرسم الصفوف الأفقية للأوراق، وloop داخلي لرسم الأوراق في كل صف. يمكن استخدام الدالة cout لطباعة الرموز المستخدمة في الرسم، مثل "*" أو "-" أو "/" وغيرها.

هذا مثال بسيط لرسم شجرة باستخدام nested loops في C++:

#include <iostream>
using namespace std;

int main()
{
    int height = 5;

    // Draw the trunk
    for(int i=1; i<=height; i++)
    {
        for(int j=1; j<=height-i; j++)
        {
            cout << " ";
        }
        for(int k=1; k<=2*i-1; k++)
        {
            cout << "*";
        }
        cout << endl;
    }

    // Draw the leaves
    for(int i=1; i<=2; i++)
    {
        for(int j=1; j<=height-2; j++)
        {
            cout << " ";
        }
        cout << "***" << endl;
    }

    return 0;
}

يمكنك تعديل الأرقام المستخدمة في الدوال الداخلية للـ loop والرموز المستخدمة في الدالة cout للحصول على شكل مختلف للشجرة.

 

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

  • 0
بتاريخ On 27‏/2‏/2023 at 22:28 قال أحمد رضا5:

 

#include <iostream>
using namespace std;

int main() {
    int size;
    cout << "Enter the size of the tree ";
    cin >> size;

    // Loop for drawing the tree
    for (int i = 0; i < size; i++) {
        // Loop for drawing the first part of the tree
        for (int j = 0; j < size-i-1; j++) {
            cout << " ";
        }
        for (int j = 0; j < i*2+1; j++) {
            cout << "*";
        }
        cout << endl;
    }

    // Loop for drawing the base of the tree
    for (int i = 0; i < size/2; i++) {
        for (int j = 0; j < size-2; j++) {
            cout << " ";
        }
        cout << "***" << endl;
    }
    return 0;
}

 

 شكرا جزيلا لكن دا مش امتحان

تم التعديل في بواسطة Mrim Bd
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...