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

الركيرسف/ماصار ،الذكي اللي بيعرف كيف

مغلق
بدأه مبرمجة أمتي في 30 مايو 2007 · 13 رد · 1,128 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم ورحمة الله وبركاته،

هذا عبارة عن سؤال في الركيرجن حاولت معه لكن ما توصلت لنفس النتيجة المطلوبة

ربما هناك امر غفلت عنه... جربوا معاي اريد اعرف غلطي ..ساكتب السؤال وتحته جوابي

السؤال هو:

write a recursive function that takes two parametrs a non-negative integers and generates the following pattern of stars .

if the non-negative integer is 4 then the pattern generated is :

****

***

**

*

*

**

***

****

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

انا فعلت هذه الدالة ..

char stars (int n)

{

if (n==1)

return"*";

else

return stars (n-1)

}

تعلمون ماذا طلع الاوت بت ...

طللللللللللللللللللللللللللللللللللع نجمممممممممة وحدة بس

جربت احط else ثانية if (n==2) ترجع نجمتين..

بس لا اعلم يصير ولا لا

خخخ ربما مستواي ضعيف شوية فاعذروني

انتظرردودكم اخواني

اللهم صلّ على سيدنا محمد وعلى آله وصحبه أجمعين..

#2

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

أختي بس سؤال بنص السؤال مطلوب أنو بالإجرائية العودية يكون في عدد 2 وسيط فما هو دور الوسيط الثاني بالموضوع ؟؟؟

إن كلماتنا ستبقى ميتة أعراساً من الشموع لا حراك فيها جامدة ، حتى إذا متنا من أجلها انتفضت حية وعاشت بين الأحياء ، كل كلمة عاشت كانت قد اقتاتت قلب إنسان حي ، فعاشت بين الأحياء ، والأحياء لا يتبنون الأموات

الليل ولى وجاء دورك يا صباح سفينة الإيمان سارت لا تبالي بالرياح

ولا تنسوني من دعائكم

#3

اعتذر اخي اخطأت بكتابة السؤال

هو ياخذ عنصر واحد فقط هذا النص الصح

write a recursive function that takes parametr a non-negative integers and generates the following pattern of stars .

if the non-negative integer is 4 then the pattern generated is :

اللهم صلّ على سيدنا محمد وعلى آله وصحبه أجمعين..

#4

لو بصيتى للشكل بمفهوم الريكرجن حتلاقيه عبارة عن star(3) بس مضاف عليها من فوق 4 نجوم و من تحت أربع نجوم, صح؟

الدالة حتبقى على الصورة الأتية:

1. رسم عدد n من النجوم

2. مناداة stars(n-1)

3. رسم عدد n من النجوم

- شرط التوقف أكيد حيبقى لما n=0 يعمل ريترن من غير ما يطبع حاجة.

حاولى تكتبيها و لو فى حاجة إسألى تانى أهلا بيكى.

#5

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

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

لقد قمت بكتابة جزء من البرنامج وهذا هو

#include <iostream>

using namespace std;

void star(int);

int main () {

star (4);

return 0;

}

void star (int a)

{

if (a!=0)

{

for (int i=0;i<a;i++)

{

cout<<"*";

}

cout <<endl;

star(a-1);

}

}

إن كلماتنا ستبقى ميتة أعراساً من الشموع لا حراك فيها جامدة ، حتى إذا متنا من أجلها انتفضت حية وعاشت بين الأحياء ، كل كلمة عاشت كانت قد اقتاتت قلب إنسان حي ، فعاشت بين الأحياء ، والأحياء لا يتبنون الأموات

الليل ولى وجاء دورك يا صباح سفينة الإيمان سارت لا تبالي بالرياح

ولا تنسوني من دعائكم

#6

سلام عليكم

مشكورين اخواني بلو تيث واخي سامر

طيب

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

وذلك باني سويت فور لوب ثاني يبدأ من a وثم يقل هكذا

for (int j=a;j<a;j--)

{

cout<<"*";

}

cout<<endl;

star (a+1);

}

بس ماصار

هل الباقي ان اسوي فور لوب ثاني؟

هل يغني الركيرجن عن الفور لوب؟

اللهم صلّ على سيدنا محمد وعلى آله وصحبه أجمعين..

#7
#include<iostream.h>
#include<conio.h>

int star(int x)
{
  if (x == 0) return 0;

  else
  {
	 for(int i=1; i<=x; i++)
		cout<<"*";
	 cout<<endl;

	 star(x-1);

	 for(int i=x; i>0; i--)
		cout<<"*";
	 cout<<endl;
  }
}
main()
{
int x;
cin>>x;
star(x);

getch();
return 0;
}
#8

:D :D :D :lol: :D

صااااااااااااااار الحمد لله ،، مششششششششكور يا اخي يوسف جزاك الله خيرررررا ،، غيرت شوية بحلك إلى ان صااااااار

شوف التغيير البسيط

#include<iostream.h>

int star(int x)

{

if (x == 0) return 0;

else

{

for(int i=1; i<=x; i++)

cout<<"*";

cout<<endl;

star(x-1);

for(int j=x; j>0; j--)

cout<<"*";

cout<<endl;

}

}

main()

{

int l;

cout<<"Enter the number :";cin>>l;

return star(l);

}

اللهم صلّ على سيدنا محمد وعلى آله وصحبه أجمعين..

#9

:blink:

الحل الاخير صار عندما استخدمنا لوب اخرى ترجع النجوم بدون ما نستخدم الركيرجن

بس مادري هل هنكا طريقة نقدر فيها نستخدم الركيرجن ؟

يعني يصير الركيرجن يرجع ورا؟

اللهم صلّ على سيدنا محمد وعلى آله وصحبه أجمعين..

#10

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

بصراحة أخي يوسف أنا معجب بطريقة حلك للمسألة طريقة رائعة بارك الله بيك وجزاك الله خيرا

ومشان سؤالك أختي مبرمجة الأمة أوصلك الله لهدفك أختي هي كود عن طريق الخورازميات العودية فقط تستطيعين الوصول للبرنامج الذي تريدين ولكن اضطررت إلى إضافة وسيط ثاني

#include <iostream>
using namespace std;
int star(int,int);
int main () {
star (6,6);
return 0;
}
int star (int a, int b)
{
	if (a!=0&&a>0)
	{
	for (int i=1;i<=a;i++)
	{
		cout<<"*";
	}
	cout <<endl;
	star(a-1,b);
	}
	if (a<=0)
	{
		if (a*-1==b)
			return 0;

		for (int i=0;i>=a;i--)
			cout <<"*";
		cout <<endl;
		star (a-1,b);
	}


return 0;	}

طبعا هنالك طريقة أخرى وهية باستخدام مدخل ثاني طبعا هاي الطريقة متخلفة شوي :) بس فكرة موجودة

#include <iostream>
using namespace std;
void star(int,int);
int main () {
star (5,5);
return 0;
}
void star (int a, int b)
{
	if (a!=0)
	{
	for (int i=0;i<a;i++)
	{
		cout<<"*";
	}
	cout <<endl;
	star(a-1,b);
	}
	if (a==0)
	{
		int n=0;
		while (n!=b)
		{
		for (int i=0;i<=n;i++)
		{
			cout <<"*";
		}
		cout<<endl;
		n++;

		}
	}
}

وبالمناسبة أختي أتوقع وجود طريقة أخرى وهية أفضل الطرق ولكنها تعتمد على مهارات الكتابة طبعا فكرة هذه الطريقة أن البرنامج عندما يأخذ مثلا الرقم 4 على سبيل المثال فإنه يقوم بالتالي :

1- بطبع في السطر الأول 4 نجوم

2- يطبع في السطر الثامن 4 نجوم

وعندما ندخل الرقم الثاني وهو 3

2- يطبع في السطر الثاني 3 نجوم

ويطبع في السطر السابع 3 نجوم

وهكذا

طبعا هذه مجرد فكرة ولا أعرف هل نستطيع تطبيقها أم لا :D

أتمنى أن أكون قد أفدت

أخوكم في الله سامر

تم تعديل هذه المشاركة بواسطة samer226047 في 31 مايو 2007 في 11:03

إن كلماتنا ستبقى ميتة أعراساً من الشموع لا حراك فيها جامدة ، حتى إذا متنا من أجلها انتفضت حية وعاشت بين الأحياء ، كل كلمة عاشت كانت قد اقتاتت قلب إنسان حي ، فعاشت بين الأحياء ، والأحياء لا يتبنون الأموات

الليل ولى وجاء دورك يا صباح سفينة الإيمان سارت لا تبالي بالرياح

ولا تنسوني من دعائكم

#11

جزاك الله خير يا اخي سامر وحفظك الله

اانا ما فهمت قصدك بهذه العبارة "هي كود عن طريق الخورازميات العودية فقط تستطيعين الوصول للبرنامج الذي تريدين"

الحل جمييييل وراقي جدددددددددا

جززززززاك الله خيرا ، ولكن ما اعلم هل ينفع نحطه ومطلوب يكون عنصر واحد للدالة في السؤال..

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

اللهم صلّ على سيدنا محمد وعلى آله وصحبه أجمعين..

#12

بسم الله الرحمن الرحيم

أختي في الله

أختي لقد طلبتي برنامج يقوم بالبرنامج كامل عن طريق الريكيرسف فقط وبما أن

كلمة ريكيرسف (recursive) أصلها جزء من (recursive alogrithm) أي خوارزمية عودية

كان معنى ما كتبت أن هذا الكود يعتمد على الريكيرسف فقط (أي بدون آي شيء أخر فقط ريكيرسف)ويحقق المطلوب :) :)

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

:)

للمعلومات :

أي برنامج يكتب على أي لغة له أساس خوارزمية (طبعا مو دايما بنلتزم بكتابة الخوارزمية قبل البرنامج ):D ولكن إذا أردنا الوصول إلى أفضل برنامج يجب علينا أن نقوم بكتابة الخوارزمية قبل البرنامج وأعتقد جازما أختي أنك تعلمتي الخوارزميات ولكن ربما بمصطلحات مختلفة :) آي الأصل واحد على كل حال

/index.php?showtopic=128687

لقد قمت بوضع موضوع قبل قليل من أجل إيضاح معنى الخوارزميات العودية والتراجعية وخوارزميات الفرز الفقاعي أرجو أنت تفيدك أختي

أخوكي في الله سامر

إن كلماتنا ستبقى ميتة أعراساً من الشموع لا حراك فيها جامدة ، حتى إذا متنا من أجلها انتفضت حية وعاشت بين الأحياء ، كل كلمة عاشت كانت قد اقتاتت قلب إنسان حي ، فعاشت بين الأحياء ، والأحياء لا يتبنون الأموات

الليل ولى وجاء دورك يا صباح سفينة الإيمان سارت لا تبالي بالرياح

ولا تنسوني من دعائكم

#13

نعم اخي سامر

المشكلة هي بتغير المصطلحات .. استوعبت بعض الاشياء مثل الفرز الفقاعي تقصد الببل سورت

والعودية تقصد الركيرسف ..

جززززززززاك الله خيررررررررررررررا ان اعطيتني هذا الرابط لاني فعلا اعاني شوية من مشكلة في فهم الركيرسف جيدا وكتابنا الشرح كله انجليزي بعضه مفهوم لكن البعض الاخر فيه فيه شوية لبس في الفهم

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

جزاك الله خيرررررررررررررررررررررررررا اخي سامر

وجعله في موازين حسناتك

اللهم صلّ على سيدنا محمد وعلى آله وصحبه أجمعين..

#14

بامكانكم استعمال ما يسمى ايضا في

Multi-task Recosive functions

- MTRF

يمكن ان يكون موضوع متقدم ... لا اعلم ما هو مستوى الطالب الذي يسأل ... اذا احببت الموضوع يمكنني ارفاق امثل ... المقصود بهذا النمط هو بناء دوال متعدده المهامات تحت داله واحده ... لكن هذا الموضوع لا يلبث الا ان يصل الى مواد وبرامج معقده التفكيك ...

Writen By: Admirer4 , B.Sc Student of EE.

Learn C Programming Language

ِCowards die many times before their death

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…