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

ههل جواب هذا السؤال صحيح

بدأه memento في 24 سبتمبر 2009 · 6 رد · 676 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،كيف حالك إن شاء الله دائمــاً بخير ؟ بين يدي سؤال بسيط وقمت بحله لكن اريد التأكد من حله هل هو صحيح اما خاطئ ؟؟

Write a C++ program that will compute the factorial of all numbers between 2 given numbers. The 2 numbers are entered by the user where the second number must be greater than the first (both numbers must be positive).

االحل :



using namespace std;
int main()
{
int fact,num1,num2;
cout<<"Please Enter 2 numbers :: ";
cin>>num1>>num2;
cout<<"\n";
if ((num1>0)&&(num2>0))
{
if (num2>num1)
{
for(num1;num1<=num2;num1++)
{
fact=1;
for(int i=1;i<=num1;i++)
fact*=i;

cout<<"number :"<<num1<<"\t"<<"factorial :"<<fact;
cout<<endl;
}
}
else
cout<<" The num1 greater than num2 :: error ";
}
else
cout<<" The num1 and num2 must be are positive ";

return 0;
}
#include <iostream>

#2

السلام عليكم,

بصراحه لم انتبه لحلك جيداً لكني قرأت السؤال وحللته لكن لم اجرب الحل على الـ compiler لأن جهازي ضعيف وقد يستغرق وقت لفتح

الـcompiler...طبعاً الحل بدون الجمل التوضيحيه الاخيره..ارجو ان تجربه وترى ما الخطأ فيه وتخبرني لأصلحه

#include <iostream>

using namespace std;
int main()
{
int fact=1,num1,num2;
cout<<"Please Enter 2 numbers :: ";
cin>>num1>>num2;
cout<<"\n";
if((num2>0)&&(num1>0)){
if(num2>num1)
{
for(num1;num1<=num2;num1++)
{
fact*=num1

}\\for
else
	 cout<<" The num1 greater than num2 :: error  ";

}\\if num2>num1

else
	cout<<" The num1 and num2 must be are positive  ";

fact\=num1*num2;

}\\if num2...

return 0;

}\\main

fact\=num1*num2;

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

العددين المدخلين صحيح؟.

ارجو ان تكون قد استفدت

If Games Are Fun.....So Making Games Making Fun

#3

يا اخي الكريم الكود الذي قمت بكتابة تأكدت منه لا يقوم بأي وظيفة حتى لا يقوم بوظيفة المضروب ،،، الرجاء التأكد منه ،،، شكرا جزيلا لك

قم بقراءه هذا الحل واعطيني ما هو رايك :



using namespace std;
int main()
{
int fact,num1,num2;
cout<<"Please Enter 2 numbers :: ";
cin>>num1>>num2;
cout<<"\n";
if ((num1>0)&&(num2>0))
{
if (num2>num1)
{
for(num1;num1<=num2-2;num1++)
{
fact=1;
for(int i=1;i<=num1+1;i++)
fact*=i;

cout<<"number :"<<num1+1<<"\t"<<"factorial :"<<fact;
cout<<endl;
}
}
else
cout<<" The num1 greater than num2 :: error ";
}
else
cout<<" The num1 and num2 must be are positive ";

return 0;
}
#include <iostream>

تم تعديل هذه المشاركة بواسطة memento في 25 سبتمبر 2009 في 14:49

#4

أولا , هل فهمي لسؤالك صحيح :

تريد ادخال ثلاثة أرقام , مثل 3 , 4 و 5 .

وسيحسب البرنامج مضروب كل عدد فيكون الناتج :

3 ---> 6

4 ----> 24

5 ----> 120

اذا كان هذا المقصود , فهناك أمور غريبة في برنامجك مثل :

	for(num1;num1<=num2-2;num1++)

لماذا تطرح هنا .. ؟

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

وهنا لماذا تزيد بواحد على num1 ..

عموما يمكنك مشاهدة حل الاخ ame5r ( أو أن تشاهد هذا الحل وتقارنه ببرنامجك ) /

#include <iostream>

using namespace std;

int factorial(int number)
{
	int result = 1;
	for(int i=number;i>=1;i--)
	{
		result = result * i;
	}
	return result;
}

int main()
{
int fact,num1,num2;
cout<<"Please Enter first number :";
cin>>num1;
cout<<"Please Enter second number :";
cin>>num2;
cout<<"\n";
if ((num1>0)&&(num2>0))
{
	if (num2>num1)
	 {
	for(;num1<=num2;num1++)
	   {

		 int result = factorial(num1);

		 cout<<"number :"<<num1<<"\t"<<"factorial :"<<result;
		 cout<<endl;
	   }
	 }
	else
		cout<<" The num1 greater than num2 :: error  ";
}
else
	cout<<" The num1 and num2 must be are positive  ";

return 0;
}

أما اذا أردت حساب مضروب الأعداد المحصورة بين العددين الذين يدخلهما المستخدم ( فقط) , فان برنامجك سيعمل , ولكن سيقع في اخطاء عند ادخال رقمين متتاليين مثلا .. ( 3 و 4 ) .

وذلك لاختلال هذه الحلقة :

	for(num1;num1<=num2-2;num1++)

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#5

أخي الشمري المطلوب من البرنامج : ادخال مجموعة من الاعداد وليس 3اعداد حتى لو كان 100 عدد لا يوجد اي مشكلة ،،، بعد إدخال مجموعة هذه الاعداد نقوم بحساب المضروب لهذه الاعداد بشرط عدم حساب مضروب اول رقم وآخر رقم ،،، لان في السؤال هو بين الرقمين المدخلين ، هل قمت بتطبيق برنامجي سوف يعطيك الناتج صحيح ولا يوجد فيه اي مشاكل واستفسارك عن هذه النقاط :

	for(num1;num1<=num2-2;num1++)

حتى لا يقوم بحساب آخر رقم في المضروب ويظهره على الشاشة ،،، قم بحذف -2 انظر انه سوف يحسب مضروب أخر رقم

وبالمثل في الآخر سوف يقوم بحساب المضروب لأول عدد ويظهره على الشاشة لذلك قم باضافة +1 :

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

الرجاء قم بعمل compile للبرنامج الخاص في وشاهد هل سوف يخرج نفس المطلوب بالسؤال ،،،، شكرا جزيلا لك وبارك الله فيك

#6

اه .. فهمت .

نعم جربت البرنامج , وهو يعمل دون مشاكل الا في حالة معينة ( لو كان الرقمين متتابعين مثل 3 و 4 , لن يطبع شيء وأظن هذا مقصود حسب مافهمت)

بالتوفيق.

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#7

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

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