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

السؤال

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...