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

مساعدة عاجلة

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

السلام عليكم

اتمنى من الجميع مساعدتي ،،

كتبت برنامج لغة السي بلس بلس لفحص ما اذا كان العدد عدد أولي أو لا ،، وطباعة ذلك عل الشاشة،،

البرنامج يقوم بعلية الفحص بشكل صحيح لكن المشكلة بعدم طباعة الجملة " انا العدد اولي " ،،

ارجو المساعدة بوقت سريع وذلك بالتعديل على البرنامج لا بتغيير الفكرة ،،

البرنامج كالتالي

#include<iostream>

using namespace std;

int main()

{

int a,x;

cout<<"\n Enter the number : ";

cin>>a;

if (a==2)

cout<<"number is prime :";

else

{

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

{

x=a%i;

if(x!=0)

{

continue;

cout<<"\n"<<a<<"is prime number:";

}

else

{

cout<<"\n"<<a<<"Number is not prime:";

break;

}

}

}

cout<<"\n\n";

system("pause");

return 0;

}

#2

تعديل بسيط

#include<iostream>
using namespace std;
int main()
{
int a,x;
int k=0;
cout<<"\n Enter the number : ";
cin>>a;
if (a==2)
cout<<"number is prime :";
else
{
for(int i=2;i<a;i++)
{
x=a%i;
if(x==0)
{
cout<<"\n"<<a<<"Number is not prime:";
break;
}
else
	k++;
}
}
if(k!=0) cout<<a<<" is prime \n";
cout<<"\n\n";
system("pause");
return 0;
}

سلام

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#3

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

اذا كانت x تساوي 0 فهذا معناه انه يقبل القسمه على العدد i وبالتالى هو ليس أولي .

اي في الحلقه فقط تكون :

if ( x == 0 ) 
// it's not prime ,break now

ودع الحلقه تكمل البحث ،، ورياضيا لا توجد فائده من البحث حتى العدد a ،، فقط يكفى جذر العدد a ،، يمكنك البحث عن اثبات ذلك لو أردت :).

مثال أخر .

#include <iostream>
#include <cmath>
using namespace std;

int isPrime (int n );

int main ()
{

	cout << "Enter The Number : ";
	int number;
	cin >> number;

	int result  =  isPrime(number) ;

	if ( result == number )
		cout << number << " is Prime Number \n";

	else
		cout << number << " is not Prime hance it divide by : " << result << endl;

	cout << "\n\n";
	return 0;
}

int isPrime (int n )
{
	for (int i=2; i<= sqrt(n); i++)
		if ( n%i == 0 )
			return i;

	// it's prime number 
	return n;
}

قم بتعديل كودك بما يلزم .

بالتوفيق :) .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#4

بداية اشكركم على هذه الاستجابة السريعة ..

بكن لدي بعض المشاكل

amin_mu123

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

لكن لو أدخلت عدد غير أولي فإنه ينفذ الجملتين انا العدد اولي وانا العدد غير أولي

حاول ان تساعدني مرة أخرى

Wajdy Essam

اعطيتني حل باستخدام الفنكشن لكني لا اريد البرنامج باستخدام الفنكشن

اذا ممكن تبحثلي في الكود الي انا كتبتو تحاول تساعدني في حل المشكلة الي فيه

مشكورين اولا واخيرا

#5

قمت بالتعديل على برنامجي بفضل مساعدتكم وبالاخص الاستاز amin_mu123

وهادا الكود بعد التطبيق

#include<iostream>

using namespace std;

int main()

{

int a,x;

int k=1;

cout<<"\n Enter the number : ";

cin>>a;

if(a<2)

cout<<"\n"<<a<<" Is not prime";

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

{

x=a%i;

if(x!=0)

{

k++;

continue;

}

else

{

cout<<"\n"<<a<<" Is not prime number";

break;

}

}

if(k==a-1)

cout<<"\n"<<a<<" Is prime number";

cout<<"\n\n";

system("pause");

return 0;

}

#6

:)

#include<iostream>
using namespace std;

int main()
{
	int a,x;
	bool flag = true;

	cout<<"\n Enter the number : ";
	cin>>a;

	if (a==2) {
		cout <<"number is prime : " << endl;
	}
	else 
	{
		for(int i=2;i<a;i++)
		{
			x=a%i;
			if(x==0)
			{ 
				cout << a <<" is not prime number:" << endl;  
				flag = false;
				break;
			}
		}

		if (  flag )
			cout << "im prime number :) " << endl;
	}

	system("pause");
	return 0;
}

}

بالتوفيق :) .

تم تعديل هذه المشاركة بواسطة Wajdy Essam في 6 مايو 2009 في 22:43

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#7

استطعت تنفيذ البرنامج بالشكل الصحيح بعد مساعدتكم و بالأخص الاستاز amin_mu123

وهذا الكود بعد التنفيذ

#include<iostream>

using namespace std;

int main()

{

int a,x;

int k=1;

cout<<"\n Enter the number : ";

cin>>a;

if(a<2)

cout<<"\n"<<a<<" Is not prime";

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

{

x=a%i;

if(x!=0)

{

k++;

continue;

}

else

{

cout<<"\n"<<a<<" Is not prime number";

break;

}

}

if(k==a-1)

cout<<"\n"<<a<<" Is prime number";

cout<<"\n\n";

system("pause");

return 0;

}

اشكركم

استطعت تنفيذ البرنامج بالشكل الصحيح بعد مساعدتكم و بالأخص الاستاز amin_mu123

وهذا الكود بعد التنفيذ

#include<iostream>

using namespace std;

int main()

{

int a,x;

int k=1;

cout<<"\n Enter the number : ";

cin>>a;

if(a<2)

cout<<"\n"<<a<<" Is not prime";

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

{

x=a%i;

if(x!=0)

{

k++;

continue;

}

else

{

cout<<"\n"<<a<<" Is not prime number";

break;

}

}

if(k==a-1)

cout<<"\n"<<a<<" Is prime number";

cout<<"\n\n";

system("pause");

return 0;

}

اشكركم

#8

السلام عليكم

جميل جدا أخى وجدى

بارك الله فيك

أخى rwad2000 الكود اللى وضعته سابقا جربته وشغال تمام والحمد لله

وكودك أيضا رائع

بالتوفيق

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#9

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

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

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

هادا الكود ..

#include<iostream>

using namespace std;

int main()

{

long num;

int a,b,x,y;

cout<<"\nEnter a five-digit number : ";

cin>>num;

cout<<endl;

a=(num/10000)%10;

cout<<a<<" ";

b=(num/1000)%10;

cout<<b<<" ";

x=(num/100)%10;

cout<<x<<" ";

y=(num/10)%10;

cout<<y<<" ";

num=num%10;

cout<<num<<" ";

cout<<endl<<endl;

system("pause");

return 0;

}

#10

قم بعمل حلقه while في كل مره قم بطباعه باقي قسمه العدد على 10 ، ثم أقسم العدد على 10 ..

واستمر هكذا الى أن يصل العدد لصفر .

#include<iostream>
using namespace std;

int main()
{
	int x;
	cin >> x;

	while ( x > 0) {
		cout << x%10 << " ";
		x /= 10;
	}

	cout << endl;
	return 0;
}

لكن هكذا ستخرج معكوسه ، يمكن أن نستخدم الستاك لعكس النتيجه

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#11

مشكوووور استازي لكن ما من طريقة غير الستاك ،، اريد البرنامج كه باستخدام اللوب فقط

#12

من غير ستاك ، ولا لوووب ، لكن لا تقل لا تريد الدوال :) ..

#include<iostream>
using namespace std;

void print (int x);

int main()
{
	int x;
	cin >> x;

	print(x);

	cout << endl;
	return 0;
}

void print (int x){
	if ( x > 0) {
		print(x/10);
	}

	if ( x != 0)
		cout << x%10 << " ";	
}

بالتوفيق ،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#13

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

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

#14

طريقه أخرى بإستخدام اللوب

#include <iostream>
using namespace std;
int main()
{
	int num,temp;
	int k=1;
	cin>>num;
	temp=num;
	while (temp!=0)
	{
		temp/=10;
		k*=10;
	}
	k=k/10;
	while (num!=0)
	{
		cout<<num/k<<"  ";
		num=num%k;
		k=k/10;
	}
	cout<<endl;
	return 0;
}

سلام

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#15

أشكركم على المساعدة جميعا ،، اصحبت الامور تمام عندي

دمتم بكل ود

تم تعديل هذه المشاركة بواسطة rwad2000 في 8 مايو 2009 في 01:16

#16

السلام عليكم

في البرنامج الثاني من الأستاز amin_mu123 ،، لفصل الرقم إلى خاناته ،، لدي بعض النقاط أتمنى أن توضح لي ،،

عندما ادخل رقم أكثر من 10 خانات لا يتم فصل الرقم إلى خاناته بطريقة صحيحة

والنقطة الثانية هي إني اذا ادخلت رقم مثلا 100000000 يتم فصل الرقم 1 فقط فيكون ناتج البرنامج هو 1 فقط وتجاهل باقي الأصفار

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

وسأكون شاكر للجميع

#17

السلام عليكم

بالنسبه لموضوع العدد المكون من عشر خانات فأكثر

لأن العدد المدخل بيكون int وطبعا له حجم محدد فى الذاكره

وبالنسبه للمشكله الثانيه

هذا تعديل بسيط

#include <iostream>
using namespace std;
int main()
{
	int num,temp;
	int k=1;
	cin>>num;
	temp=num;
	while (temp!=0)
	{
		temp/=10;
		k*=10;
	}
	k=k/10;
	while (num!=0)
	{
		cout<<num/k<<"  ";
		num=num%k;
		k=k/10;
	}
	while (k>0)
	{
		cout<<0<<"  ";
		k=k/10;
	}
	cout<<endl;
	return 0;
}

بالنسبه للمشكله الأولى لا ينفع غير انك تستخدم السترينج

سلام

اللهم صل على سيدنا محمد وعلى آله وصحبه وسلم

#18

شكرا جزيلا لك ،،

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

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