شارك المقالة

لرسم شجرة بالنجوم في C++ نبني مثلثًا متزايد العرض ثم نضيف جذعًا في المنتصف. يعتمد المثال على iostream وstring فقط. يقرأ ارتفاعًا من المستخدم ويتوقف بعد طباعة الشجرة، بدل حلقة لا تنتهي أو اعتماد على ملفات ألوان غير متاحة في كل مترجم.

الكود الكامل باستخدام C++17

#include <iostream>
#include <string>

int main() {
    int height{};
    std::cout << "Height (2..20): ";
    if (!(std::cin >> height) || height < 2 || height > 20) {
        std::cout << "Invalid height.\n";
        return 1;
    }
    for (int row = 1; row <= height; ++row)
        std::cout << std::string(height - row, ' ')
                  << std::string(2 * row - 1, '*') << '\n';
    for (int row = 0; row < 2; ++row)
        std::cout << std::string(height - 1, ' ') << "|\n";
}

حساب النجوم والمسافات

في الصف row نطبع height – row مسافة ثم 2 * row – 1 نجمة. عندما يكون الارتفاع 3 تظهر نجمة ثم ثلاث نجوم ثم خمس نجوم بمحاذاة وسطية. بعد آخر صف نطبع سطرين للجذع، كل منهما height – 1 مسافة ثم |.

متطلبات التشغيل

تعمل الصيغة باستخدام C++17 في مترجم قياسي، ولا تحتاج gotoxy أو Sleep أو color.h. لم نضف ألوانًا لأن دعم أكواد الألوان يختلف بين الطرفيات. اختر خطًا ثابت العرض للمحافظة على المحاذاة؛ اختلاف عرض المحارف يؤثر على الشكل حتى إن كانت الحسابات صحيحة.

التحقق والتمرين

يرفض المثال الارتفاع الأقل من 2 أو الأكبر من 20 لتبقى نتيجة التمرين واضحة ومحدودة. جرّب الحدين والقيمة 3 ثم إدخال حرف. يمكن إضافة أكثر من طبقة مثلثة لاحقًا، لكن حدد عرض الطبقات والجذع بدل استخدام goto لإعادة البرنامج دون خيار خروج.

ترجمة المثال وتشغيله

احفظ المثال في ملف main.cpp واختر معيار C++17 في محررك. مع GCC أو Clang يمكنك الترجمة بالأمر g++ -std=c++17 -Wall -Wextra -pedantic main.cpp -o main ثم تشغيل الملف الناتج. ترجم كل مثال كبرنامج مستقل؛ لا تجمع دوال main من دروس مختلفة في ملف واحد.

الصور والفيديو من الشرح السابق

الكود النصي أعلاه هو النسخة المصححة؛ قد تختلف المواد المرئية السابقة في أسماء المتغيرات أو طريقة التشغيل.

شاهد أيضًا
مقالات ذات صلة
🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع