Menu
CoddyTech

معامل باقي القسمة (Modulo)

جزء من قسم الأساسيات في رحلة C++ على Coddy. الدرس 17 من 74.

يعطي عامل باقي القسمة % باقي عملية القسمة. في C++، يُستخدم بصياغة بسيطة:

result = dividend % divisor;
  • dividend: العدد الذي يتم تقسيمه.
  • divisor: العدد الذي يقسم المقسوم.
  • result: باقي القسمة.

على سبيل المثال:

result = 10 % 3;

هنا، يُقسَم 10 على 3. يدخل 3 في 10 ثلاث مرات، ويتبقى 1. لذا، ستكون قيمة result هي 1.

عادةً ما تُستخدم عملية باقي القسمة للتحقق مما إذا كان العدد زوجيًا أم فرديًا:

  • إذا كان العدد زوجيًا، فإن قسمته على 2 تترك باقيًا قدره 0.
  • إذا كان العدد فرديًا، فإن قسمته على 2 تترك باقيًا قدره 1، أو -1 عندما يكون العدد سالبًا.

عند التعامل مع الأعداد ذات الفاصلة العائمة (الأعداد مزدوجة الدقة) في C++، لا يمكنك استخدام عامل باقي القسمة % مباشرةً. بدلًا من ذلك، عليك استخدام الدالة fmod() من مكتبة <cmath>. تعمل هذه الدالة بطريقة مشابهة لعامل باقي القسمة، لكنها تحافظ على الدقة العشرية. على سبيل المثال:

#include <cmath>

double result = fmod(5.2, 2.0);
// قيمة result هي 1.2

إليك كيفية عمل ذلك: يدخل 2.0 في 5.2 مرتين (4.0)، والباقي هو 1.2 (5.2 - 4.0 = 1.2).

مثال آخر:

double result = fmod(7.8, 3.5);
// قيمة result هي 0.8

عندما يكون المقسوم عليه أكبر من المقسوم، تكون النتيجة مساوية للمقسوم. ينطبق هذا على كلٍّ من % وfmod().

5 % 10 = 5
3 % 7 = 3
fmod(2.5, 8.0) = 2.5

لماذا؟ لا يتسع المقسوم عليه في المقسوم ولو مرة واحدة، لذا يكون المقسوم بأكمله هو الباقي.

challenge icon

التحدي

مبتدئ

اكتب شيفرة تهيّئ ثلاثة متغيرات، a (int) وb (double) وc (int) بالقيم 9 و2.6 و11 (على الترتيب).

بعد ذلك، هيّئ المتغيرات التالية:

  • d (int) الذي سيحتفظ بباقي قسمة a على 2 
  • e (int) الذي سيحتفظ بباقي قسمة a على 3
  • f (double) الذي سيحتفظ بباقي قسمة b على 1.5
  • g (double) الذي سيحتفظ بباقي قسمة b على 3.9
  • h (int) الذي سيحتفظ بباقي قسمة c على 10

اطّلع على النتيجة ولاحظ كيف تؤثر المقسومات والمقسوم عليها المختلفة في النتيجة.

جرّب بنفسك

#include <iostream>
#include <cmath>

int main() {
    // اكتب الكود الخاص بك أدناه
    
    
    // لا تغيّر السطر أدناه
    std::cout << "a = " << a << std::endl;
    std::cout << "b = " << b << std::endl;
    std::cout << "c = " << c << std::endl;
    std::cout << "d = " << d << std::endl;
    std::cout << "e = " << e << std::endl;
    std::cout << "f = " << f << std::endl;
    std::cout << "g = " << g << std::endl;
    std::cout << "h = " << h << std::endl;
    return 0;
}
quiz iconاختبر نفسك

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

جميع دروس الأساسيات

تدرّب بنفسك: مترجم C++ عبر الإنترنت