الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ممكن مساعده

مغلق
بدأه najeeb في 8 نوفمبر 2001 · 5 رد · 552 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوه الاعزاء لكم التحيه من اخوكم وعندي هذا السوال ولو تكرمتكم بالمساعده

make a program to give all combinations of r numbaers picked from n natural numbers ?????????/

ارجو التركيز في السوال ولكم جزيل الشكر

#2

السلام عليكم

اخوي نجيب

ما فهمت شو فكرة البرنامج ......... ممكن توضح شوي :rolleyes:

ورود

#3

شكرا ورود على المساعده

السؤال قد لايفتهم للبعض من او وهله ويجب التعمق في معنى السؤال لانه عباره عن رياضيات

فالمطلوب من سؤالي هوعباره عن توافيقcombination nCr

بحيث تدخل مجموعه من الاعداد(n) فاذا افترضنا ان

4 =n فان المجموعه ستكون بالشكل التالي

{x1,x2,x3,x4} (التعويض بالارقام {1,2,3,4})

ويجب ان تكون الارقام مرتبه تصاعديا

والان يجب ان نختار قيمه لل r بحيث تكون هذه القيمه اصغر من القيمه n

فاذا جعلنا قيمة الا r=1 فسيكون التوافيق كالتالي

4C1=4

وسيكون عدد الاقواس المكونه من رقم (وذلك لا ن قيمة r=1)هي نا تج هذا التوافيق وستكون اربعه اقواس وهذا هو المطلوب من سؤالي....

وترتيبها حسب التالي

(1) (2) (3) (4)

اما اذا جعلنا قيمة الا r=2 فسيكون التوافيق كالتالي

4C2=6

وسيكون عدد الاقواس المكونه من رقمين (وذلك لا ن قيمة r=2)هي نا تج هذا التوافيق وستكون سته اقواس....

وترتيبها حسب التالي

(1,2) (2,3) (3,4)

(1,3) (2,4)

(1,4)

واما في حالة ان ال r=3 فسيكون التوافيق كالتالي

4C3=4

وسيكون عدد الاقواس المكونه من ثلاثه ارقام (وذلك لا ن قيمة r=3)هي نا تج هذا التوافيق وستكون اربعه اقواس ....

وترتيبها حسب التالي

(1,2,3) (2,3,4)

(1,2,4)

(1,3,4)

وهذه القاعده اريدها لاي عددين طبيعيين n,r بحيث ان r اصغر من n

#4

عفوا اخوي نجيب

قيمة x في

{x1,x2,x3,x4} شو تعني

و ما فهمت على اي اساس يطلع البرنامج

اذا كانت n=4 ,r =3

(1,2) (2,3) (3,4)

(1,3) (2,4)

(1,4)

وكذللك بالنسبه لاي n, r يعني على اي اساس يختار الارقام الي يحطهم بين القوسين:confused:

ورود

#5

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

واذا فيه اي توضيح فالتوضيح كله من التباديل والتوافيق وكيفيه حسابها فمثلا عندما تكون r=3 , n=4

فانها تساوي مضروب الاربعه على مضروب الثلاثه ناقص (مضروب اربعه ناقص ثلاثه ) اي تساوي 4*3*2*1* /(3*2*1*)(1)

وتساوي اربعه اي ان عدد التوافيق هي اربعه وهي كما كتبت ويارب يكون قصدي مفهوم يارب يـــــــــــــــــــــــــــــــــــــــــــــــــــــــارب والمساله تكون هكذا كل عددين وبالله التوفيق ................................................

مع الف شكر :confused: :confused: :confused: :confused:

#6

السلام عليكم،

المسألة يمكن حلها ببساطة باستخدام مفهوم التعاودية في البرمجة ..

على اعتبار أنك تريد nCr والتي تساوي n!/(n-r)! فإنه يمكن كتابتها بالصورة

nCr = a, (n-1)C(r-1)

وهذا يعني اخراج عنصر من القائمة وتكرار العملية من أجل بقية العناصر مع انقاص عدد التكرارات ..

ملاحظة : أنا كنبت ما كتبته للأخ (tariq2002) لأنه للمرة الثانية قام بكتابة سؤال ويربد الاجابه عليه وكأنه عمنحل وظيفته أو شئ .. أنا لاأمانع بوضع أسئلة كهذه ولكن يفضل التفكير في الاجابة ومن ثم وضع السؤال مع المحاولة ..

والروتين الذي يقوم بالشرح السابق هو :

#include 
#include 
using namespace std;

string out;

void GenerateComp(int *a, int n, int r)
{
	if (n < r)
		return;

	if (r > 1)
	{
		char buff[20];
		string curr;

		for (int i = 0; i <= n - r; i++)
		{
			curr = out;
			sprintf(buff, "%d,", a);
			out += buff;

			GenerateComp(&a[i + 1], n - i - 1, r - 1);

			out = curr;
		}
	}
	else 
	{
		for (int i = 0; i < n; i++)		
			cout << "(" << out << a <<")";
		cout << endl;
	}
}

int a[] = {1, 2, 3, 4, 5};

int main(int argc, char* argv[])
{
	GenerateComp(a, 5, 3);

	return 0;
}

Coding on the Cloud and for the Cloud!

My Blog

هذا الموضوع مغلق.

مواضيع مشابهة