• 0

طباعة شكل معين بلغة ++c

لو سمحتوا ازاي اعمل شكل مهين يعني مثلثين قصاد بعض واني ادخل رقم 4 فيطبع الشكل ويكون مابينه مسافات بلغه c++ زي كده 

وده رابط السوال اللي اقصده codeforces/283715/problem/P

ارجوا الجابه عن سوالي 

انشر على الشّبكات الاجتماعية


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

حل المشكلة على أجزاء، نبدأ من أعلى اليسار، نطبع عدد من النجوم (أو فراغات) حسب في أي سطر نحن و يقلل عددهم مع النزول سطرأ للأسفل ثم نطبع جزء المثلث العلوي (حرف D ليمثل Diamond) وعدد الحروف مثلا هي التي تمثل المثلث، ثم عدد نجوم نفس الجزء الأول ليكون الشكل كالتالي:

***D***
**DDD**
*DDDDD*
DDDDDDD
*DDDDD*
**DDD**
***D***

ونكرر العملية للنصف الآخر..

int main()
{
  int n,a;
  cin>>n;
  // المرور على النصف العلوي للمعين
  for (int i=0;i<n/2;i++)
  {
    a=n/2-i; // حساب عدد الفراغات على اليسار وهو نصف العرض ناقص رقم العمود
    while(a--) {cout<<"*";}
    a=2*i+1; // حساب عرض المعين في السطر الحالي
    while(a--) {cout<<"D";}
    a=n/2-i; // حساب عدد الفراغات في القسم الأيمن
    while(a--) {cout<<"*";}
    cout<<endl;
  }
  // في السطر الأوسط يمكن طباعة عرض المعين مباشرة
  for (int i=0;i<n;i++)
    cout<<"D";cout<<endl;
  
  // في الجزء السفلي نكرر ماقمنا به في الأعلى ولكن بالعكس
  for (int i=1;i<n/2+1;i++)
  {
    a=i;
    while(a--) {cout<<"*";}
    a=n-(2*i+1)+1;
    while(a--) {cout<<"D";}
    a=i;
    while(a--) {cout<<"*";}
    cout<<endl;
  }


  return 0;
}

 

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

يمكنك تغيير شكل الرموز كما تريد بعد تجريب البرنامج

انشر على الشّبكات الاجتماعية


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

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن