recent
أخبار ساخنة

مفهوم باقي القسمة Remainder في لغة سي بلس بلس C++ الدرس |21|

الصفحة الرئيسية


باقي القسمة Remainder

في هذا الدرس سوف نقوم بتطبيق تطبيقات اكثر على جملة if و سوف نتعلم على أداة رياضية تُدعى باقي القسمة Remainder و سوف نقوم بعمل بعض التطبيقات عليها, باقي القسمة مفهوم مهم جداً في البرمجة سنقوم بفهمه في هذا الدرس, و هو ما يتبقى من عملية القسمة المطوَّلة.

مثال 1

#include <iostream>
using namespace std;
int main()
{
    int x = 22;
    int y;
    cout << "أدخل قيمة y : ";
    cin >> y;

    cout << x << " / " << y << " = " << x / y <<endl;
    return 0;
}


شرح المثال السابق 1

لقد قمنا بإنشاء متغير عددي صحيح و هو x و قيمته هي 22 ثم أنشأنا متغير مجهول y ليتم مطالبة المستخدم بإدخاله, قم بنينا دالة الطباعة cout و طلبنا من البرنامج يطبع x و من ثم يضع إشارة القسمة / ثم بعدها إشارة = و بعدها يقوم بتقسيم x على y و يظهر نتيجة بعدها على الشاشة, و عند تنفيذ run للبرنامج و إدخال الرقم 2 ستكون النتيجة بالشكل


مثال 2

#include <iostream>
using namespace std;
int main()
{
    int x = 22;
    int y;
    cout << "Enter the value y : ";
    cin >> y;


    cout << x << " / " << y << " = " << x / y <<endl;
    cout << x << " % " << y << " = " << x % y <<endl;

    return 0;
}

 

شرح المثال السابق 2

لقد قمنا بإنشاء متغير عددي صحيح و هو x و قيمته هي 22 ثم أنشأنا متغير مجهول y ليتم مطالبة المستخدم بإدخاله, قم بنينا دالة الطباعة cout و طلبنا من البرنامج يطبع x و من ثم يضع إشارة القسمة / ثم بعدها إشارة = و بعدها يقوم بتقسيم x على y و يظهر نتيجة بعدها على الشاشة, ثم قمنا بدالة طباعة ثانية و طلبنا من البرنامج يطبع x و من ثم يضع إشارة بافي القسمة % ثم بعدها إشارة = و بعدها يقوم بحساب باقي قسمة x على y و يظهر نتيجة بعدها على الشاشة و عند تنفيذ run للبرنامج و إدخال الرقم 3 ستكون النتيجة بالشكل


تعلمنا في الرياضيات طريقة القسمة المطوّلة و كٌنّا إذا نُريد أن نقسِّم 3 على إثنان فإننا نرى كم إثنان موجودة في الـ 3 و سيكن هناك إثنان واحدة في الثلاثة, إذاً ناتج القسمة المطولة يساوي 1 ثم نُكمِل بضرب الناتج في المقسوم عليه 1 ضرب 2 يساوي 2 ثم نُنقِص الرقم المقسوم منه 3 ناقص إثنان يساوي 1.


خواص باقي القسمة

توجد خمس خصائص هامة لباقي القسمة سوف نقوم بشرحها بالتفصيل لكي نفهمها و هذه الخصائص هي


الخاصية الأولى

إذا كان باقي قسمة رقم على رقم آخر يساوي صفر 0 فهذا يعني أن الرقم الأول يقبَل القسمة على الرقم الثاني, مثلاً 10 باقي قسمتها على 5 يساوي 0 لأن 10 تقبَل القسمة على 5 أما 10 باقي قسمتها على 6 لا تساوي الصفر فهي لا تقبل القسمة عليها.

 

الخاصية الثانية

باقي قسمة (A) لنفرض A % 2 = و لنفرض A أي رقم على إثنان يميّز الرقم ما إن كان زوجياً أو فردياً, فإن كان الناتج 0 فهو رقم زوجي أما إن كان الناتج 1 فهو رقم فردي, هذه الخاصية هي ناتج من الخاصية الأولى حيث أن أي رقم يقبل القسمة على 2 هو رقم زوجي.

 

الخاصية الثالثة

لنفترض A % B = ؟ ناتج عملية باقي قسمة A يعني أي عدد على المتغير B يعني أي عدد آخر يكون دائماً أقل من B حيث أنه لا يمكِن أن يكون باقي القسمة أكبر من المقسوم عليه.


هكذا إذا اكملنا 7 و 8 و 9 سوف تنتج نواتج أقل من 3 دائماً, و هذه الخاصية تُفيدُنا أن جميع الأرقام الناتجة مهما كبُرَ الرقم الأول ستكون محصورة بين 0 و أقل من الرقم المقسوُم عليه, و لذلك في خاصية العدد الزوجي و الفردي كٌنّا نقسِم على 2 فباقي القسمة على 2 سيكون محصوراً بين 0 و 1 مثلاً 7%2 =1 أي أن هناك خياران إما زوجي أو فردي.

 

الخاصية الرابعة

لو قسّمنا قسمة عادية لأي عدد على 10 سنقوم بإزالة الرقم الأخير في خانة الآحاد مثلاً 400/10=40 لقد أزلنا الرقم الأخير من الآحاد 0 و نفس الناتج سوف يكون لقسمة الأعداد الصحيحة مثلاً 401/10=40 فهي لا تٌحافظ على الأعداد العشرية بالنسبة للعدد 401 أي أزلنا الرقم في خانة الآحاد أما باقي القسمة سوف يكون الرقم الذي أزلناه من خانة الآحاد نفس الأمر لـ 402 مثلاً و بهذه الطريقة يمكننا معرفة كم قيمة خانة الآحاد في أي رقم و يمكننا لآحقاً تفكيك الرقم لأكثر من خانة.

 

الخاصية الخامسة

لنفترض A%B=A إذا كان الرقم B اكبر من الرقم A أي لا يقبَل القسمة عليه فإن الناتج دوماً سوف يساوي A مثلاً 3%9=3 ثلاثة باقي قسمتها على تسعة يساوي 3 لأن 2 لا تقبَل القسمة على 9.

 

هذه هي عملية باقي القسمة لم نتخيل يوماً أنه عندما تعلمنا باقي القسمة في الرياضيات أنَّ لها هذه الفوائد الخيالية أما الآن فقوموا بإختبار معلوماتكم بباقي القسمة.


مثال 3

قُم بكتابة برنامج يحسب عدد الأسابيع في السنة ثم إحسب عدد الأيام الفردية المتبقية عدا الأسابيع.

#include <iostream>
using namespace std;
int main()
{
    int days = 365;

    cout << days / 7 << "weeks";
    cout << " &" << days % 7 << " days" <<endl;

    return 0;
}

 

شرح المثال السابق 3

تم إنشاء متغير عددي إسمه days و قيمته 365 و هو عدد أيام السنة و وضعنا دالة طباعة تقوم بطباعة ناتج قسمة عدد ايام السنة على 7 و يطبع بعدها كلمة weeks يعني إسبوع, ووضعنا دالة طباعة ثانية من أجل باقي القسمة ووضع إشارة & ثم يقوم بحساب باقي القسمة من عدد ايام السنة في 7 ثم يكتب بعدها كلمة days أي يوم و عند تشغيل الكود سيظهر بالشكل

نلاحظ من الصورة السابقة أنه كتب لنا أن عدد الأسابيع في السنة هي 52 إسبوع و باقي القسمة هو 1 يوم.


مثال 4

قم بعمل برنامج يقوم بعكس الرقم المٌدخَل له شرط أن يكون الرقم المُدخَل مؤلف حصراً من ثلاث خانات.

#include <iostream>
using namespace std;
int main()
{
    int x;
    cout << "اكتب الرقم مؤلف من ثلاث خانات" << endl;
    cin >> x;

    if(x >= 100 && x <= 999)
    {
        //الرقم صحيح
        int a1 = x % 10;
        int a2 = (x / 10) % 10;
        int a3 = x / 100;
        cout << a1 << a2 << a3 << endl;
    }
    else {
        //الرقم خاطئ
        cout << "مع السلامة الرقم خاطئ" <<endl;
        exit(1);
    }
    return 0;
}

 


شرح البرنامج السابق 4

انشأنا متغير عددي int و هو x و قيمته سوف يقوم المستخدم بإدخالها, ثم طبعنا للمستخدم رسالة تخبره بأن يدخل رقم مؤلف من ثلاث خانات بشكل إجباري حتى يتم عكسها, بعد ذلك وضعنا دالة cin الذي هي من سوف تطلُب من المستخدم إدخال قيمة x و إستقبالها, و قمنا بوضع شرط عبر دالة if الشرطية إذا كان x اكبر أو يساوي 100 && x أصغر أو يساوي 999 هذه من أجل أن يقوم المُستخدِم مجبوراً بكتابة رقم محصور بين 100 و 999 و إن تم إدخال غير ذلك فسيتم طرده من البرنامج, و الشرط كان في حال كان الرقم صحيح يتم تنفيذ ما يلي :

أنشأنا ثلاث متغيرات و هي a1 لخانة الآحاد و a2 لخانة العشرات و a3 لخانة المئات و شروطهم كانت في خانة الآحاد نقوم بإنتزاع قيمة الآحاد بالإعتماد على الخاصية الرابعة من الخواص السابقة, و بالنسبة لخانة العشرات a2 ايضاً نقوم بالإعتماد على الخاصية الرابعة لإنتزاع رقم العشرات عبر (x / 10) % 10 و ثم في الخانة الثالثة خانة المئات قمنا بتقسيم x على 100 لأن إذا قسّمنا على 100 فالبرنامج سيقوم بحذف رقم الآحاد و رقم العشرات و إبقاء رقم المئات.


بحال إدخال قيمة صحيحة

 

بحال إدخال قيمة خاطئة

 
google-playkhamsatmostaqltradent