الصفحة رقم 1 من 3 123 الأخيرةالأخيرة
مشاهدة النتائج 1 الى 20 من 49
  1. #1

    دورة تعلم أساسيات لغة سي++ : تمارين الدرس السادس إلى الثامن


    attachment
    السلام عليكم و رحمة الله و بركاته
    بسم الله الرحمن الرحيم و الصلاة و السلام على الرسول اﻷمين و على آله و صحبه المنتجبين

    attachment

    تمارين الدروس
    السادس إلى الثامن


    و فيها ثلاثة أسئلة

    1. يعلمك السؤال كيف تقاطع عمل أي برنامج و تنهيه ، يطلب منك السؤال تجربة مقاطعة برنامج فيه حلقة غير منتهية.
    2. لديك ملفات برامج سي++ لكنها تحوي أخطاء و عليك أن تصححها.
    3. عليك أن تكتب برنامجا يقوم بالمهام المطلوبة في السؤال.
    attachment

    بإمكانكم تحميل التمارين هنا

    أنبه إلى أن هذه الدروس مهمة جدا ﻷي مبرمج لذا أشدد على حلها و السؤال في حال تعذر حلها

    إذا واجهتم مشاكل فأرجوا قراءة الملف "readme.txt" و ﻻ تترددوا بإخبارنا و لكم جزيل الشكر

    استمتعوا بالتمارين و ﻻ تترددوا باﻻستفسار و النقاش gooood
    تحياتي
    روح سامية
    الملفات المرفقة الملفات المرفقة
    اخر تعديل كان بواسطة » ولد عتيبة 511 ™ في يوم » 09-05-2011 عند الساعة » 21:58


  2. ...

  3. #2
    السلام عليكم
    لقد رجعنا biggrin biggrin biggrin
    المهم لقد إستطعت حل التمرين الاول والثاني

    الأول

    كود الـ PHP:
    #include <iostream>
    #include <sstream>
    using namespace std;

    int main() {
        
    int num=0;
        
    string answer;
        
    cout << "enter a number" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> num;
        if (
    num%2==0)
            
    cout << "number is even" << endl;
        else
            
    cout << "number is odd" << endl;
        return 
    0;

    الثاني

    كود الـ PHP:
    #include <iostream>
    using namespace std;

    int main() {
        
    int num=3;
        while (
    num >= 1) {
            
    cout << num << ", ";
            
    num--;
        }
        
    cout << "FIRE!!";
        return 
    0;


    أما التمرين الثالث فهمت فكرته بس لم أعلم من أين أبدأ
    فهل لي بتلميح tongue
    22139cf7a2ec484293b98e3e6605479e

  4. #3
    إقتباس الرسالة الأصلية كتبت بواسطة zoom-20 مشاهدة المشاركة
    السلام عليكم
    لقد رجعنا biggrin biggrin biggrin
    المهم لقد إستطعت حل التمرين الاول والثاني

    الأول

    كود الـ PHP:
    #include <iostream>
    #include <sstream>
    using namespace std;

    int main() {
        
    int num=0;
        
    string answer;
        
    cout << "enter a number" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> num;
        if (
    num%2==0)
            
    cout << "number is even" << endl;
        else
            
    cout << "number is odd" << endl;
        return 
    0;

    الثاني

    كود الـ PHP:
    #include <iostream>
    using namespace std;

    int main() {
        
    int num=3;
        while (
    num >= 1) {
            
    cout << num << ", ";
            
    num--;
        }
        
    cout << "FIRE!!";
        return 
    0;


    أما التمرين الثالث فهمت فكرته بس لم أعلم من أين أبدأ
    فهل لي بتلميح tongue
    و عليكم السلام
    أهلا بعودتكم gooood
    حلك صحيح في التمرينين الأولين smile
    بالنسبة للتمرين الثالث فهل قمت بالمحاولة ؟
    البرنامج مكتوب لديك و يمكن تشغيله لكن إذا شغلتيه ستجدين فيه مشاكل
    ما هي المشاكل التي وجدتها حتى نحللها واحدة واحدة فنعرف الخطأ

    بانتظاركم
    تحياتي
    روح سامية

  5. #4
    إقتباس الرسالة الأصلية كتبت بواسطة روح سامية مشاهدة المشاركة
    و عليكم السلام
    أهلا بعودتكم gooood
    حلك صحيح في التمرينين الأولين smile
    بالنسبة للتمرين الثالث فهل قمت بالمحاولة ؟
    البرنامج مكتوب لديك و يمكن تشغيله لكن إذا شغلتيه ستجدين فيه مشاكل
    ما هي المشاكل التي وجدتها حتى نحللها واحدة واحدة فنعرف الخطأ

    بانتظاركم
    تحياتي
    روح سامية

    عندنا biggrin
    ما لاحظته بالبرنامج انه لا يطبع النتيجة
    لذلك غيرت السطر الملون
    كود الـ PHP:
    #include <iostream>
    #include <sstream>
    using namespace std;

    int main () {
        
    int base=0power=0result=0;
        
    string answer;
        
    cout << "enter base" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> base;
        
    cout << "enter power" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> power;
        
    cout << base << '^' << power << " = ";
        for (
    result=0;power 1;power++) {
            [
    COLOR="#FF0000"]power*=base[/COLOR];
        }
        
    cout << result;
        return 
    0;

    ولكن النتيجة هي طباعة العدد 0
    فما الحل؟

  6. #5
    إقتباس الرسالة الأصلية كتبت بواسطة zoom-20 مشاهدة المشاركة
    ما لاحظته بالبرنامج انه لا يطبع النتيجة
    جميل جدا
    هذه أهم ملاحظة
    في الأمر الأخير كتبنا بشكل واضح :

    كود الـ PHP:
    cout << result
    و هذا أمر طباعة واضح أي أن عملية الطباعة دائما تحصل إلا في حالة أن الأمر لا يتم تنفيذه
    لاحظي أن قبل هذا الأمر هناك حلقة :

    كود الـ PHP:
    for (result=0;power 1;power++) {
        
    power*=base;

    هذا يعني أن الحلقة إذا انتهت يتم تنفيذ أمر الطباعة
    أما إذا لم تكن حلقة منتهية فإن أمر الطباعة لا يتم تنفيذه

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

    نحن بانتظاركم
    تحياتي
    روح سامية

  7. #6
    السلام عليكم
    امممم لم تصل لي الفكرة بالشكل المطلوب
    ما أعرف أن علينا أن نعدل بالحلقة لكي نجعلها تعطينا الحل المطلوب
    ولكن لم أصل لنتيجة
    كل محاولات أوصلتني لهذا الحل
    كود الـ PHP:
    #include <iostream>
    #include <sstream>
    using namespace std;

    int main () {
        
    int base=0power=0result=0;
        
    string answer;
        
    cout << "enter base" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> base;
        
    cout << "enter power" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> power;
        
    cout << base << '^' << power << " = ";
        for (
    result>=0;power 1;base>1) {
            
    power*base==result;
        }
        
    cout << result;
        return 
    0;

    ولكن ما زال لا يعطيني النتيجة frown

  8. #7
    إقتباس الرسالة الأصلية كتبت بواسطة zoom-20 مشاهدة المشاركة
    السلام عليكم
    امممم لم تصل لي الفكرة بالشكل المطلوب
    ما أعرف أن علينا أن نعدل بالحلقة لكي نجعلها تعطينا الحل المطلوب
    ولكن لم أصل لنتيجة
    كل محاولات أوصلتني لهذا الحل
    كود الـ PHP:
    #include <iostream>
    #include <sstream>
    using namespace std;

    int main () {
        
    int base=0power=0result=0;
        
    string answer;
        
    cout << "enter base" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> base;
        
    cout << "enter power" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> power;
        
    cout << base << '^' << power << " = ";
        for (
    result>=0;power 1;base>1) {
            
    power*base==result;
        }
        
    cout << result;
        return 
    0;

    ولكن ما زال لا يعطيني النتيجة frown
    و عليكم السلام و رحمة الله
    حسنا حسنا ، هذه هي الحلقة في صورتها كما في السؤال و بعدها أمر الطباعة :

    كود:
    for (result=0;power > 1;power++) { 
        result*=base; 
    }
    cout << result;
    لونت باللون الأحمر شرط الحلقة و هو أن قيمة power أكبر من ١ ، ما دام هذا الشرط صائبا فإن البرنامج يستمر بتنفيذ الحلقة دون توقف حتى يصبح الشرط خاطئا.
    نستطيع أن نتخيل الأوامر كما يلي :

    ١- قيمة result تساوي ٠.
    ٢- إذا كان power أكبر من ١ :
    أ- قيمة result تساوي نفس قيمة result مضروبة في base.
    ب- زد واحدا على power.
    ج- عد إلى الأمر رقم ( ٢ ).
    ٣- إطبع قيمة result.

    أمر الطباعة يحدث بعد الحلقة مباشرة ، إذا لم يتم أمر الطباعة فهذا يعني أن البرنامج يستمر بتنفيذ الحلقة دون توقف.
    الشرط الحلقة هو < power أكبر من ١ >
    هذا يعني أن ما يحدد توقف الحلقة هو قيمة power.
    إذا كانت الحلقة لا تنتهي فهذا يعني أن الخطأ موجود في أمر متعلق بالمتغير power.
    هناك أمران فيهما تعبير power و هما
    الأمر ( ب ) أي زيادة قيمة power واحدا و الأمر ( ٢ ) و هو الشرط < power أكبر من ١ >
    إذا تتبعت الحلقة بهذين الأمرين فكم مرة سيتم تنفيذ الحلقة ؟ لنفترض أن قيمة power تساوي ٣ ، في بداية الحلقة يكون
    power أكبر من ١ أي أن الشرط صائب ، بعد نهاية الحلقة يزيد power فيصبح ٤ ، الشرط ما زال صائبا و الحلقة تنفذ ، بعدها يصبح power ٥ و ما زالت قيمته أكبر من ١ فيتم تنفيذ الحلقة إلى أن يصبح power أصغر من ١.
    في حالتنا السابقة كم مرة يتم تنفيذ الحلقة حتى يصبح الشرط خاطئا و تتوقف الحلقة ؟

    بانتظارك
    wink
    تحياتي
    روح سامية
    اخر تعديل كان بواسطة » روح سامية في يوم » 21-10-2011 عند الساعة » 15:52

  9. #8

  10. #9
    إقتباس الرسالة الأصلية كتبت بواسطة zoom-20 مشاهدة المشاركة
    إذن هل يعني ان باور قيمتها صفر ؟؟؟؟
    مرحبا
    مرة أخرى سأكتب الحلقة هنا :

    كود الـ PHP:
    for (result=0;power 1;power++) {
        
    result*=base

    سأذكر النقطتين اللتين فيهما المشكلة و هما :
    ١- شرط الحلقة أن power أكبر من ١.
    ٢- بعد الحلقة نزيد power ١.
    ذكرنا أن لو كانت قيمة power ٣ في البداية فهي أكبر من ١ و الشرط صحيح و يتم تنفيذ الحلقة.
    بعد الحلقة يزيد power و تصبح قيمته بالتأكيد أكبر من ١ فلا يمكن أن يكون عدد أكبر من ١ و يصبح أصغر منه بعد الزيادة.
    مهما زدنا قيمة power فإنه يبقى أكبر من ١ و هذا يعني أن الحلقة لا تنتهي أبدا بل يستمر البرنامج في تنفيذها ، لهذا السبب لا تتم الطباعة فالبرنامج لا ينتهي أصلا و لا يصل أصلا لأمر الطباعة.

    المشكلة إذا أننا نزيد قيمة power والمفترض أن ننقص من قيمته حتى تنتهي الحلقة ، لو كتبنا :

    كود الـ PHP:
    for (result=0;power 1;power--) { 
        
    result*=base

    فإن power يحمل قيمة معينة و لنفترض أنها ٣ ، بعد الحلقة تقل قيمة power و يصبح ٢ و بعد تنفيذ الحلقة مرة أخرى تصبح قيمة power ١ و عندها يصبح الشرط خاطئا و يخرج البرنامج من الحلقة ، بهذا الشكل نكون قد نفذنا الحلقة عددا محددا من المرات و أنهيناها و ليس كما هو موجود في البرنامج حيث أن الشرط دائما صائب و يتم تنفيذ الحلقة إلى ما لا نهاية.
    بعدها سيتم تنفيذ أمر الطباعة gooood

    نحن بانتظاركم

    تحياتي
    روح سامية
    اخر تعديل كان بواسطة » روح سامية في يوم » 22-10-2011 عند الساعة » 22:42

  11. #10
    السلام عليكم
    إذن نكون بهذا قد أنهينا تصويب اول خطأ صحيح biggrin

  12. #11
    إقتباس الرسالة الأصلية كتبت بواسطة zoom-20 مشاهدة المشاركة
    السلام عليكم
    إذن نكون بهذا قد أنهينا تصويب اول خطأ صحيح biggrin
    بالضبط gooood

  13. #12
    السلام عليكم

    الخطوة الثانية سوف تكون بجعل المعادلة تعطينا القيمة المطلوبة بدل 0
    لذلك عدلت بالبرنامج بالطريقة التالية ولكنه دائما يعطيني أرقام كبيرة
    هذا هو البرنامج
    كود الـ PHP:
    #include <iostream>
    #include <sstream>
    using namespace std;

    int main () {
        
    int base=0power=0result=0;
        
    string answer;
        
    cout << "enter base" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> base;
        
    cout << "enter power" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> power;
        
    cout << base << '^' << power << " = ";
        
    int mon;
        for (
    result=mon;power 1;power--) {
     
    power*base==mon ;
    }
        
    cout << result;
        return 
    0;


  14. #13
    إقتباس الرسالة الأصلية كتبت بواسطة zoom-20 مشاهدة المشاركة
    السلام عليكم

    الخطوة الثانية سوف تكون بجعل المعادلة تعطينا القيمة المطلوبة بدل 0
    لذلك عدلت بالبرنامج بالطريقة التالية ولكنه دائما يعطيني أرقام كبيرة
    هذا هو البرنامج
    كود الـ PHP:
    #include <iostream>
    #include <sstream>
    using namespace std;

    int main () {
        
    int base=0power=0result=0;
        
    string answer;
        
    cout << "enter base" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> base;
        
    cout << "enter power" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> power;
        
    cout << base << '^' << power << " = ";
        
    int mon;
        for (
    result=mon;power 1;power--) {
     
    power*base==mon ;
    }
        
    cout << result;
        return 
    0;

    مرحبا
    هذا البرنامج بعد تعديل الخطإ الأول :
    كود الـ PHP:
    #include <iostream>
    #include <sstream>
    using namespace std;

    int main () {
        
    int base=0power=0result=0;
        
    string answer;
        
    cout << "enter base" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> base;
        
    cout << "enter power" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> power;
        
    cout << base << '^' << power << " = ";
        for (
    result=0;power 1;power--) {
            
    result*=base;
        }
        
    cout << result;
        return 
    0;

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

    بانتظارك
    تحياتي
    روح سامية

  15. #14
    السلام عليكم
    عذرا لتأخري بالرد
    فلقد كنت بفترة الإختبارات الدراسية
    المهم
    لقد نظرت للبرنامج لفترة من الوقت
    ولكني مهما نظرت لا أجد سبب الخطأ وموقعه
    ربما هذا بسبب إنقطاعي عن البرمجة لفترة frown

  16. #15
    إقتباس الرسالة الأصلية كتبت بواسطة zoom-20 مشاهدة المشاركة
    السلام عليكم
    عذرا لتأخري بالرد
    فلقد كنت بفترة الإختبارات الدراسية
    المهم
    لقد نظرت للبرنامج لفترة من الوقت
    ولكني مهما نظرت لا أجد سبب الخطأ وموقعه
    ربما هذا بسبب إنقطاعي عن البرمجة لفترة frown
    و عليكم السلام
    أهلا بعودتكم و بإذنه تعالى تحصلون على أعلى الدرجات gooood

    في البرنامج لدينا شيء يشير بشكل أو بآخر إلى الخطإ و هو النتيجة المطبوعة أي قيمة المتغير result
    من هنا نعرف أن المشكلة في المتغير result و علينا أن نتتبع البرنامج خصوصا في الخطوات التي تتغير فيها قيمة result
    قيمة result تتغير في المواقع التالية :
    ١- في إعلان المتغير تكون قيمته ٠.
    ٢- في بداية الحلقة نعين قيمة ٠ للمتغير.
    ٣- داخل الحلقة نضرب قيمة base في result و نحفظ الناتج في result.

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

    بداية علينا أن نفترض قيما يدخلها المستخدم للمتغيرين power و لتكن قيمته ٣ و base و لتكن قيمته ٢.
    لنتتبع الآن الحلقة و قيمة result :
    ١- بداية الحلقة --> ٠.
    ٢- power يساوي ٤ إذا الشرط صائب --> result = قيمة result × base = ٠ × ٢ = ٠.
    ٣- power يساوي ٣ إذا الشرط صائب --> result = قيمة result × base = ٠ × ٢ = ٠.
    ٤- power يساوي ٢ إذا الشرط صائب --> result = قيمة result × base = ٠ × ٢ = ٠.
    ٥- power يساوي ١ إذا الشرط خاطئ --> نخرج من الحلقة و قيمة result النهائية تساوي ٠.

    بعد تتبعنا للحلقة نجد أن قيمة result لا تتغير أصلا داخل الحلقة فهي في البداية ٠ و بعد أن نقوم بضرب result في base يبقى الناتج ٠ حيث أن أي عدد نضربه في ٠ يعطينا قيمة ٠.

    عرفنا الآن المشكلة و علينا أن نبدأ بالحل

    بانتظارك لنسمع حلك wink

    تحياتي
    روح سامية

  17. #16
    عدنا
    إن شاء الله نحصل على أعلى الدرجات وشكرا
    وكل عام وانتم بخير بمناسبة عيد الأضحى
    ^^
    ما فهمته من الرد السابق أن حل المشكلة سوف يكون هنا
    كود الـ PHP:
    for (result=0;power 1;power--) 
    بتغيير قيمة result ولكن كل محاولاتي بائت بالفشل
    المحاولة الوحيدة التي أعطتني نتيجة مغايرة للصفر هي

    كود الـ PHP:
    for (result++;power 1;power--) 
    ولكن نتيجة الضرب كانت دائما 1 frown

  18. #17
    إقتباس الرسالة الأصلية كتبت بواسطة zoom-20 مشاهدة المشاركة
    عدنا
    إن شاء الله نحصل على أعلى الدرجات وشكرا
    وكل عام وانتم بخير بمناسبة عيد الأضحى
    ^^
    ما فهمته من الرد السابق أن حل المشكلة سوف يكون هنا
    كود الـ PHP:
    for (result=0;power 1;power--) 
    بتغيير قيمة result ولكن كل محاولاتي بائت بالفشل
    المحاولة الوحيدة التي أعطتني نتيجة مغايرة للصفر هي

    كود الـ PHP:
    for (result++;power 1;power--) 
    ولكن نتيجة الضرب كانت دائما 1 frown
    مرحبا مرة أخرى
    كل عام و أنتم بألف خير
    wink

    القسم الأول في الحلقة يسمى قسم الابتداء
    مع أن ما كتبته يعمل على الأغلب لكن كان الأفضل أن تقومي بعملية ابتداء أي أن تكتبي ما يلي :
    كود الـ PHP:
    for (result=1;power 1;power--) 
    كما ذكرنا فالمشكلة أن قيمة result لا تتغير لأننا ابتدأناها بقيمة ٠ و التي لا تتغير أبدا بالضرب لذا كان علينا أن نبحث عن قيمة أخرى تناسب هذا الموضع
    إذا ضربنا أي عدد في واحد فإن العدد نفسه ينتج لذا كان مناسبا أن نبدأ ناتج الضرب بالرقم واحد كما فعلنا هنا ، إذا كان الأس صفر فناتج العملية الأسية يكون ١ و هو تماما ما يعطيه البرنامج هنا

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

    بانتظارك
    gooood
    روح سامية

  19. #18
    أممممم لا أعرف كيف أعبر عن صدمتي الشديدة eek
    لقد قمت بوضع قيمة result =1 أكثر من مرة ولكن دائما كان يعطيني خطأ
    والناتج دائما واحد والآن إكتشفت ان السبب هو ليس من قيمة result
    ولكن بسبب سطر أضفته عن طريق الخطأbiggrin والآن عندما كتبت البرنامج من الجديد مع التغيرات
    إشتغل معاي زين الفل asian
    وها هو الكود


    كود الـ PHP:
    #include <iostream>
    #include <sstream>
    using namespace std;

    int main () {
        
    int base=0power=0result=0;
        
    string answer;
        
    cout << "enter base" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> base;
        
    cout << "enter power" << endl;
        
    getline(cin,answer);
        
    stringstream(answer) >> power;
        
    cout << base << '^' << power << " = ";

        for (
    result++;power>1;power--) {
            
    result*=base;
        }
        
    cout << result;
        return 
    0;


    ولكن بهذا سوف نكون قد حللنا خطأن من أصل 3
    إذن ما هو ال3 لاني أرى البرنامج يعمل بشكل جيد

  20. #19
    مرحبا
    سرني أن تكوني قد انتهيت من هذه المشكلة و أنا واثق أنك تعملت من هذا التمرين smile
    المشكلة الأخيرة...
    قلت أنك لا تلاحظين مشكلة أليس كذلك ؟
    المفترض من البرنامج أن يقوم بحساب عملية أسية
    يعني عدد أس عدد آخر
    ٣ أس ٤ = ٨١
    هل يعطيك البرنامج هذه النتيجة ؟

    بانتظارك
    تحياتي
    روح سامية

  21. #20
    ^^
    عندما ركزت بنواتج العمليات الحسابية
    اجد بعضها تعطي نتائج غير منطقية مثل 2ضرب 5 = 5
    إذا ما العمل ؟

الصفحة رقم 1 من 3 123 الأخيرةالأخيرة

بيانات عن الموضوع

الأعضاء الذين يشاهدون هذا الموضوع

عدد زوار الموضوع الآن 1 . (0 عضو و 1 ضيف)

الكلمات الدلالية لهذا الموضوع

المفضلات

collapse_40b قوانين المشاركة

  • غير مصرّح لك بنشر موضوع جديد
  • غير مصرّح بالرد على المواضيع
  • غير مصرّح لك بإرفاق ملفات
  • غير مصرّح لك بتعديل مشاركاتك
  •  

مكسات على ايفون  مكسات على اندرويد  Rss  Facebook  Twitter