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

إنشاء هرم بالنجوم بحلقة for واحدة

محمد عنيبة

السؤال

هذا برنامج يطبع هرم نجوم بحلقة واحدة بلغة++ C لكنني لم أفهم على أي أساس وضعت الشروط في جملة if للتعويض عن الحلقات الناقصة 

٢٠٢١٠١٠١_٢١٣٣٠٣.png

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

Recommended Posts

  • 0

مرحبا محمد،

يمكننا فهم الشكل العالم لشجرة النجوم بتقسيمه لـ 3 أجزاء.

الجزء الأول على اليسار : يمثل عدد الفراغات قبل النجوم.

الجزء الثاني الأوسط : يمثل رسم النجوم و عددهم حسب رقم السطر الذي نحن فيه.

الجزء الثالث الأيمن: مسؤول عن رسم سطر جديد (نهاية السطر)

tree.thumb.jpg.49d18959c09bc048be64c346959bca4c.jpg

شرح البرنامج:

 

#include <iostream>
using namespace std;


// إجرائية رسم النجوم
void pattern(int n)
{
	int i, k, flag = 1;

	// سنقوم بالاعتماد على حلقة واحدة ستعبر عن عدد الأسطر و الأعمدة
  	// عدد المحارف المطلوبة للرسم إن كانت فراغات أو نجوم
	for (i = 1, k = 0; i <= 2 * n - 1; i++) {
		// الحالة الأولى على اليسار
      	// نحن في موقع بعيد عن الشجرة ويجب رسم فراغ
		if (i < n - k)
			cout << " ";

		// الحالة الثانية في الوسط علينا هنا رسم نجمة
      	// الشجرة متناوبة في مكان النجوم لذلك استعملنا متغير بولياني 
		else {
          	// ستتناوب قيمة العلم في كل مرة ندخل إلى هذا الجزء من الشيفرة البرمجية
			if (flag)
				cout << "*";
			else
				cout << " ";

			flag = 1 - flag;
		}

		// الحالة الثالثة
      	// نحن خارج الشجرةننهي السطر الحالي و نبدأ سطر جديد
		if (i == n + k) {
			k++;
			cout << endl;

			// N الشرط التالي يحدد نهاية الرسم في حال وصولنا للسطر رقم 
			// 2 * n- 1 والعمود الأخير فيه أي الخلية صاحبة الرقم
			if (i == 2 * n - 1)
				break;

			// في حال كنا لم نصل للسطر الأخير فنكون في بداية سطر جديد ونعيد تهيأة المتغيرات
			i = 0; 
			flag = 1; // لنرسم نجمة في بداية الشجرة للسطر الجديد
		}
	}
}

// تنفيذ البرنامج
int main()
{
	int n = 6;

	// استدعاء الإجرائية الخاصة بالرسم
	pattern(n);
	return 0;
}

بالتوفيق

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

  • 0
بتاريخ 10 ساعات قال Wael Aljamal:

مرحبا محمد،

يمكننا فهم الشكل العالم لشجرة النجوم بتقسيمه لـ 3 أجزاء.

الجزء الأول على اليسار : يمثل عدد الفراغات قبل النجوم.

الجزء الثاني الأوسط : يمثل رسم النجوم و عددهم حسب رقم السطر الذي نحن فيه.

الجزء الثالث الأيمن: مسؤول عن رسم سطر جديد (نهاية السطر)

tree.thumb.jpg.49d18959c09bc048be64c346959bca4c.jpg

شرح البرنامج:

 


#include <iostream>
using namespace std;


// إجرائية رسم النجوم
void pattern(int n)
{
	int i, k, flag = 1;

	// سنقوم بالاعتماد على حلقة واحدة ستعبر عن عدد الأسطر و الأعمدة
  	// عدد المحارف المطلوبة للرسم إن كانت فراغات أو نجوم
	for (i = 1, k = 0; i <= 2 * n - 1; i++) {
		// الحالة الأولى على اليسار
      	// نحن في موقع بعيد عن الشجرة ويجب رسم فراغ
		if (i < n - k)
			cout << " ";

		// الحالة الثانية في الوسط علينا هنا رسم نجمة
      	// الشجرة متناوبة في مكان النجوم لذلك استعملنا متغير بولياني 
		else {
          	// ستتناوب قيمة العلم في كل مرة ندخل إلى هذا الجزء من الشيفرة البرمجية
			if (flag)
				cout << "*";
			else
				cout << " ";

			flag = 1 - flag;
		}

		// الحالة الثالثة
      	// نحن خارج الشجرةننهي السطر الحالي و نبدأ سطر جديد
		if (i == n + k) {
			k++;
			cout << endl;

			// N الشرط التالي يحدد نهاية الرسم في حال وصولنا للسطر رقم 
			// 2 * n- 1 والعمود الأخير فيه أي الخلية صاحبة الرقم
			if (i == 2 * n - 1)
				break;

			// في حال كنا لم نصل للسطر الأخير فنكون في بداية سطر جديد ونعيد تهيأة المتغيرات
			i = 0; 
			flag = 1; // لنرسم نجمة في بداية الشجرة للسطر الجديد
		}
	}
}

// تنفيذ البرنامج
int main()
{
	int n = 6;

	// استدعاء الإجرائية الخاصة بالرسم
	pattern(n);
	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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...