Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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

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

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

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

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

result = 10 % 3;

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

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

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

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

#include <cmath>

double result = fmod(5.2, 2.0);
// النتيجة هي 1.2

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

مثال آخر:

double result = fmod(7.8, 3.5);
// النتيجة هي 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 modulo 2 
  • e (int) الذي سيحمل نتيجة a modulo 3
  • f (double) الذي سيحمل نتيجة b modulo 1.5
  • g (double) الذي سيحمل نتيجة b modulo 3.9
  • h (int) الذي سيحمل نتيجة c modulo 10

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

ورقة مرجعية

يعطي عامل باقي القسمة (modulo) % باقي عملية القسمة:

result = dividend % divisor;

مثال:

result = 10 % 3;  // result is 1

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

  • الأرقام الزوجية: number % 2 == 0
  • الأرقام الفردية: number % 2 == 1

بالنسبة لأرقام الفاصلة العائمة (floating-point)، استخدم fmod() من مكتبة <cmath>:

#include <cmath>

double result = fmod(5.2, 2.0);  // result is 1.2
double result2 = fmod(7.8, 3.5); // result2 is 0.8

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

جرّب بنفسك

#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اختبر نفسك

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

جميع دروس Fundamentals