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

سؤال للمحترفين

بدأه baf12 في 31 أغسطس 2011 · 5 رد · 1,243 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
#include <iostream>
 using namespace std;
 int main()
 {
 int number=0;
 cout << "Please Enter The Number:\t";
 cin >> number;

 for (int i=number-1 ; i>1 ; i=i-1)
 {
 if (number%i==0)
 break;
 }

 if (i==1)
 cout << endl << "The Numberare " ;
 else cout << endl << "The Number not are";

 cout << endl;

 return 0;
 }

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

#2

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

int number=0;
 cout << "Please Enter The Number:\t";
 cin >> number;

هنا يقوم بتعريف متغير ويقوم بالطلب من المستخدم أن يدخل قيمه لهذا المتغير

for (int i=number-1 ; i>1 ; i=i-1)
 { if (number%i==0)
 break; 
}

في البدايه ما هو الرقم الاولي هو الرقم الذي لا يقبل القسمه (لا يوجد باقي لقسمته علي أي عدد )إلا علي نفسه أو علي 1 أي 7 لا تقبل القسمه علي أي رقم إلا علي 7أو 1

بالتالي عند تحديد الرقم الأولي نقوم بقسمته علي كل الأعداد التي أصغر منه لنتأكد انه لا يقبل القسمه عليهم حتي نصل إلي الواحد

يقوم هنا بعمل loop تبدأ هذه الدواره بالرقم الذي هو أصغر من الرقم المدخل بمقدار 1 "int i=number-1" أي مثلا إذا أدخل 5 فإن رقم بداية loop هو 4

بعد ذلك يقوم بإختبار الشرط "number%i==0"يقوم بإختبارباقي قسمة العدد المدخل علي العدد i الذي هو أصغر منه فإذا كان صحيح أي يقبل القسمه فإن العدد غير أولي يخرج " break; " وإذا كان خطأ أي لا يقبل القسمه فسيكمل

وهكذا يقوم بالإستمرار مع كل الأعداد التي أصغر منه حتي الواحد

"i=i-1" ويطرح من i واحد كل مره يقوم بالإختبار "number%i==0" حتي تكون i تساوي الواحد " i>1" فيخرج

بعد الدوارة يختبر إذا كان i=1 أي الدوارة إختبرت كل الأرقام التي بين الرقم المدخل حتي وصلت للعدد واحد يكون العدد أولي

cout << endl << "The Numberare " ;

وإذا كان غير ذلك يكون غير اولي

else cout << endl << "The Number not are";

مثال إذا أدخل الالمستخدم الرقم 5 فسيقوم بإختبار باقي قسمة ال5 علي 4 فيجد انها لا تساوي ال0 فيكمل بإختبار ال5 علي 3 وهكذا حتي يصل إلي ال 5 علي ال 1 ويكون العدد اولي

اما إذا أدخل المستخدم الرقم 4 فسيقوم بإختبار باقي قسمة ال4 علي 3 فيجد انها لا تساوي 0 فيكمل بإختبار ال4 علي 2 فيجد انها تساوي ال0 فيخرج ويصبح العدد غير اولي

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

تم تعديل هذه المشاركة بواسطة cpp _lover في 31 أغسطس 2011 في 23:41

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

"فمن إتبع هداي فلا يضل ولا يشقي " صدق الله العظيم

ماض في الطريق إلي .... C++

#3
cpp _lover كتب:

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

int number=0;
 cout << "Please Enter The Number:\t";
 cin >> number;

هنا يقوم بتعريف متغير ويقوم بالطلب من المستخدم أن يدخل قيمه لهذا المتغير

for (int i=number-1 ; i>1 ; i=i-1)
 { if (number%i==0)
 break; 
}

في البدايه ما هو الرقم الاولي هو الرقم الذي لا يقبل القسمه (لا يوجد باقي لقسمته علي أي عدد )إلا علي نفسه أو علي 1 أي 7 لا تقبل القسمه علي أي رقم إلا علي 7أو 1

بالتالي عند تحديد الرقم الأولي نقوم بقسمته علي كل الأعداد التي أصغر منه لنتأكد انه لا يقبل القسمه عليهم حتي نصل إلي الواحد

يقوم هنا بعمل loop تبدأ هذه الدواره بالرقم الذي هو أصغر من الرقم المدخل بمقدار 1 "int i=number-1" أي مثلا إذا أدخل 5 فإن رقم بداية loop هو 4

بعد ذلك يقوم بإختبار الشرط "number%i==0"يقوم بإختبارباقي قسمة العدد المدخل علي العدد i الذي هو أصغر منه فإذا كان صحيح أي يقبل القسمه فإن العدد غير أولي يخرج " break; " وإذا كان خطأ أي لا يقبل القسمه فسيكمل

وهكذا يقوم بالإستمرار مع كل الأعداد التي أصغر منه حتي الواحد

"i=i-1" ويطرح من i واحد كل مره يقوم بالإختبار "number%i==0" حتي تكون i تساوي الواحد " i>1" فيخرج

بعد الدوارة يختبر إذا كان i=1 أي الدوارة إختبرت كل الأرقام التي بين الرقم المدخل حتي وصلت للعدد واحد يكون العدد أولي

cout << endl << "The Numberare " ;

وإذا كان غير ذلك يكون غير اولي

else cout << endl << "The Number not are";

مثال إذا أدخل الالمستخدم الرقم 5 فسيقوم بإختبار باقي قسمة ال5 علي 4 فيجد انها لا تساوي ال0 فيكمل بإختبار ال5 علي 3 وهكذا حتي يصل إلي ال 5 علي ال 1 ويكون العدد اولي

اما إذا أدخل المستخدم الرقم 4 فسيقوم بإختبار باقي قسمة ال4 علي 3 فيجد انها لا تساوي 0 فيكمل بإختبار ال4 علي 2 فيجد انها تساوي ال0 فيخرج ويصبح العدد غير اولي

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

ممتاز أفدتني كثيرا كان عني الغموض في فهم loop جزاك الله خيرا

#4

ممكن سؤال الله يحفظك

ما الفرق بين codeblockو vc++6

متلا هدا الكود في

#include <iostream>
 using namespace std;

 int main()
 {
 int number=0;
 int max=0;
int min;
for (int i=0; i< 5;i++) {
 cout << "Enter the number:\t";
 cin >> number;

 if (number > max)
 max=number;

 if (number < min)
 min=number;
}

 cout << endl << endl;
 cout << "The Max Number is:\t" << max;
 cout << "\nTne Min Number id:\t" << min;
 cout << endl;
 return 0;
 }

عند كتابته في codeblock يعطي نتيجة الماكس العدد الكبير ونتيجة المين العدد الصغير أما vc++6يعطي الماكس العدد الكبير أما minفيكون 0 أو نتيجة خاطئة

#5

لا شكر علي واجب

اخي العزيز ... أحب ان أنوهك إلي أن :

لا تهتم كثيرا بالمقارنه بين المترجمات الاهم هو الكود صحيح ولا أقصد هنا الصحيح من جهة قواعد اللغه ولكن الكود صحيح من جهة غرض الكود وفائدة البرنامج

إستخدم مترجما واحدا وانا انصحك بإستخدام vc++

بالنسبة للكود الذي ذكرته

int min;

هنا لم تعطي قيمه إبتدائيه للمتغير min وبالتالي سيأخد قيمه عشوائيه من الذاكره

وبالتالي

 if (number < min)
 min=number;

عند المقارنه سيكون هناك أخطاء كثيره

والحل هنا ان تضع قيمه إبتدائيه للmin ولكن لاحظ عند وضع القيمه الإبتدائيه لل max وضعت القيمه 0 وجعلتها أصغر قيمه يمكن للمستخدم إدخالها

اي أنك إذا أدخلت عدد بالإشاره السالبه سيكون هناك أخطاء كثيره تؤدي لتلف البرنامج وبالمثل فإن القيمه الإبتدائيه لل min ستكون أكبر قيمه للمستخدم

يمكن إدخالها مثلا 100 وبهذا المنطق فإنك قد حصرت المستخدم بأكبر رقم وأصغر رقم لذلك اترك هذه الخوارزميه ... وفكر بواحده اكثر دقه وسهوله

خذ هذه

#include <iostream>
 using namespace std;

 int main()
 {
 const int size =5;
 int array[size];
 int n;
 for(n=0;n<size;n++)
 {
	 cout << "ENTER A VALUE  :  ";
	 cin >> array[n];
 }
 int max=array[0];
 int min=array[0];

 for(n=0;n<size;n++)
 {
	 if(array[n]>max)
		 max=array[n];
 }
 for(n=0;n<size;n++)
 {
	 if(array[n]<min)
		 min=array[n];
 }

 cout <<"TNE MAXIMUM NUMBER IS :  " << max;

 cout << endl << "THE MINIMUM NUMBER IS : " << min;

 return 0;
 }

فكر بها

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

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

"فمن إتبع هداي فلا يضل ولا يشقي " صدق الله العظيم

ماض في الطريق إلي .... C++

#6

السم عليكم

واخيرا سمح لى هذا الموقع بأضافة رد او عرض مشكله

انا من محبي برمجة c++ وقطعت فيها شوطا لابأس به ولكن عندما تداخلت على الأمور فى الدوال التى ينشؤها المبرمج بنفسه رأيت من المستحسن ان ارجؤها الى حين آخر ولما عدت اليها بعد فتره طويله وجدت ان البرنامج يسمح لي بكتابة الكود ويسمح لى بتصحيحه لكنه لا يظهر لي النتيجه بالشاشه السوداء اعتقدت ان البرنامج مكرنك وقد انتهت مدته

دخلت موقع ميكروسوفت فلم اجد الا نسخة 2010 دخلت موقع فوجدته ولكن عندما طلبت شراءه فاجأنى انه لايستطيع شحنه خارج الولايات المتحده ولحسن الحظ لي جليس لديه حساب في شركة شحن واعطانى اسم موقعها ورقم حسابه فيها تم الشراء والشحن خلال اربعة ايام فقط معامله ممتازه البرنامج عباره عن ستة اقراص بما فيها قرصي مكتبة msdn ولكن وحدت النتيجه كالسابقه بعد تحميله فلم يتغير شئ

ارجو من من لديه حل ان يسعفنى به لأنى الآن متوقف بسبب هذه المشكله وله كل التقدير والثناء

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