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

السؤال

Recommended Posts

  • 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;
}

 

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

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...