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

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

بدأه رماد إنسانه في 29 أغسطس 2009 · 5 رد · 778 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كنت اتابع احد الدورات المعروضه في المنتدى ولكن تاريخها قديم وعند تطبيقي لاسئله الواجب لاحظت اختلاف طريقتي اقصد استخدم قواعد مختلفه في العمليات الحسابيه واعطني نفس النتيجه؟

هل هذا مقبول؟

اليكم المثال:

كان السؤال كالتالي:

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

حلي للسؤال :

#include<iostream>

using namespace std;

int main()

{

int numb1,numb2;

cout<<"enter 2 number\n";

cin>> numb1 >>numb2;

if( (numb1%numb2)==0)

cout<<"the first is the square of the second"<<endl;

if ( (numb1%numb2)!=0)

cout<<"the first is not the square of the second"<<endl;

return 0;

}

الاجابه الموضوعه كانت كالتالي:

#include <iostream>

using namespace std;

int main ()

{

int number1, number2;

cout << "Input the first number: ";

cin >> number1;

cout << "Input the second number: ";

cin >> number2;

if ( number1 % number2 == 0 )

cout <<" the first is multiple of second \n";

if ( number1 % number2 )

cout <<" the fist isn't multiple of second \n";

return 0;

}

الفرق بسيط جدا وهو اني استخدمت علامه != في مقابل ان الجواب المطروح لم يستخدمه.

سؤالي الثاني وهو ماهي علامة % وفي ماذا تستخدم لاني لم استطع فهمها

الرجاء وضع امثله ان امكن

#2

السلام عليكم

أتمنى ان تستخدم وسم الكود

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

بالنسبه للكودين في المثالين هما متشابهان .

تذكر دائما ان الشرط ينفذ اذا كان قيمته أكبر من صفر

عندما تقراء if أو while

العلامه % هي باقي العدد الكبير على الصغير وإذا كان صغير الي كبير ترجع العدد الصغير دائما.

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int numb1,numb2;
  6. while(cin>>numb1>>numb2)
  7. cout<<numb1<<"%"<<numb2<<"="<<numb1%numb2<<endl;
  8. }
  9.  

وهذه بعض المخرجات

2 3

2%3=2

5 7

5%7=5

9 3

9%3=0

3 9

3%9=3

6 2

6%2=0

2 6

2%6=2

12 3

12%3=0

3 12

3%12=3

8 4

8%4=0

3 4

3%4=3

5 2

5%2=1

2 5

2%5=2

tvquran_6.gif

#3

طيب اخوي ممكن تشوف هالرابط

جواب سؤال التحدي الثاني

هنا:الكود لجواب سؤال التحدي الثاني

والسؤال كان

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

بين كل خانتين وذلك بشكل معكوس, كما في الشكل التالي :

عند ادخال العدد 42339 يقوم بطباعته بالشكل التالي : 4 2 3 3 9

انا نسخت لك الرابط عشان ماعرفت اكتب الكود

سؤالي هو في الاجابه استخدم الرمز %

لم افهم بالضبط لماذا استخدمه ؟ ممكن تشرح لي الفكره

تم تعديل هذه المشاركة بواسطة رماد إنسانه في 30 أغسطس 2009 في 01:10

#4

اختي موضوعك هذا ينقسم الى شطرين حسب مافهمته ..

الاول .. هو مسألة اختلاف الطرق .. والثاني هو ماورد في المشاركة الثانية ..

لنبدأ بالاول ..

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

يعني ستعدد عليك المصادر والدورات والدروس .. ولكل مؤلف طريقته الخاصه ..

من الممكن ان يكون الشرط عدم مساواة في طريقة .. ومن الممكن ان يكون المساواة ولكن في الداخل تغيير للطريقة ..

وهكذا ..

لنعد الان الى المثالين التي ذكرتهما في اول مشاركه ..

تذكري دائما هذه المعلومة ..

البرمجة تتطلب منك ثلاثة اقسام .. الاول ادخال والثاني معالجة والثالث اخراج ..

المثالين التي ذكرتهما تنقسم الى هذه الاجزاء ..

هذا الجزء مقتبس من المثال الاول ..

جزء الادخال ..

int numb1,numb2;
cout<<"enter 2 number\n";
cin>> numb1 >>numb2;

جزء المعالجة .. ويحتوي في داخله على جزء الاخراج ( وهي نتائج الشرطين ) ..

if( (numb1%numb2)==0) 
cout<<"the first is the square of the second"<<endl;
if ( (numb1%numb2)!=0) 
cout<<"the first is not the square of the second"<<endl;

وهذا الجزء مقتبس من المثال الثاني ..

جزء الادخال ..

cout << "Input the first number: ";
cin >> number1;

cout << "Input the second number: ";
cin >> number2;

جزء المعالجة .. ويتضمن ايضا جزء الاخراج في داخله وهي نتائج الشرطين ايضا ..

if ( number1 % number2 == 0 )
cout <<" the first is multiple of second \n";
if ( number1 % number2 )
cout <<" the fist isn't multiple of second \n";

الفرق بين جزئي الادخال في المثالين بسيط جدا وواضح وهو .. ان الاول يستعمل جملة الادخال لمرة واحده للمتغيرين وتم ذلك باستعمال الفاصله ( , ) .. وهذا شئ وارد .. فمن الممكن ان تدخلي خمس متغيرات في سطر واحد ..

ولكن عند تنفيذ البرنامج عملية الادخال تتم بادخال اول متغير ثم الضغط على Enter وبعدها المتغير الثاني ثم Enter وهكذا .. وهذا مايفصل بالفارزه ..

بالنسبه لجزئي المعالجة .. الفرق بينها بسيط ايضا .. وهو بالشرط الثاني بالتحديد ..

بالمناسبه بالنسبه لـ ( % ) فهي السؤال عن باقي القسمه ..

يعني مثلا 8 % 2 = 0 .. لان قسمة 8 على 2 هي 4 والباقي يكون صفر .. وهي نتيجة استعمال % ..

الشرط الاول في المثالين متشابهه ..

if( (numb1%numb2)==0)

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

وهذا هو الشرط الاول في المثال الثاني ..

if ( number1 % number2 == 0 )

لاحظي انها متشابه مع اختلاف اسماء المتغيرات ..

الان لنعد الى الشرط الثاني ..

في المثال الاول كان الشرط هو ..

if ( (numb1%numb2)!=0)

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

اما في المثال الثاني ..

if ( number1 % number2 )

بما انه لم يذكر النتيجة .. يعني انه سال عن باقي قسمة الاول على الثاني .. لكنه لم يعطي النتيجة .. اي انه لم يحدد كم كان هو الباقي .. ولذلك فان نتيجة مثل هذه النوعية من الاسئلة تندرج تحت النظام البولياني اي Boolean .. اي True او Flase او بالتحديد 0 او 1 ..

وهنا السؤال هو هل العدد الاول يقبل القسمه على الثاني يعني هل هي واحد او اكبر ماعدا الصفر .؟؟

اي انه عوض عن السؤال بالشكل التالي ..

if ( number1 % number2 ) <= 1

فهي متشابهه ..

هذا بالنسبه للشطر الاول كما قلنا ..

-----------

السؤال كان هو ادخال رقم يتكون من خمس خانات .. والناتج يعطي العدد مفصول .. ماعلينا من المثال ولكن لنعد للسؤال ..

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

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

يعني لو كان العددين عشرات اجري المعادلة مع 100 .. ولو كان مئات اجريها مع 1000 وهكذا ..

يعني مثلا .. لدينا العدد 10605 .. لو اردنا ان نطبع العدد الاول فقط وهو 5 .. فاننا نقسم العدد باكمله على 10 .. وهو الاحاد ..

ولو اردنا العدد 605 من العدد السابق فاننا نجري المعادلة مع 1000 كما اسلفت ..

وهكذا .. المثال بسيط ومفهوم ..

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

تحياتي العطرة ...

تم تعديل هذه المشاركة بواسطة سنان محمد صالح في 30 أغسطس 2009 في 02:34

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#5

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

وللتخلص من العدد الايمن نقسم العدد على 10.

تتبع الكود هكذا :

  1. //let number=12345
  2. digit1 = number % 10; //digit1=5 because 12345%10 =5
  3. number = number / 10; //number=1234 because 12345/10=1234
  4.  
  5. digit2 = number % 10; //digit2=4 because 1234%10=4
  6. number = number / 10; //number=123 because 1234/10 =123
  7.  
  8. digit3 = number % 10; //digit3=3 because 123%10=3
  9. number = number / 10; //number=12
  10.  
  11. digit4 = number % 10; //digit4=2 because 12%10=2
  12. number = number / 10; //number=1
  13.  
  14. digit5 = number ; //digit5=1
  15.  
  16.  
  17.  

تم تعديل هذه المشاركة بواسطة فهدالشلوي في 30 أغسطس 2009 في 03:54

tvquran_6.gif

#6

الفكره اصبحت واضحه لي

مشكورين جميبعا

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

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

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

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

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