معامل باقي القسمة (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لماذا؟ المقسوم عليه يتسع لصفر من المرات، لذا فإن المقسوم بالكامل هو الباقي.
التحدي
مبتدئاكتب كوداً يقوم بتهيئة ثلاثة متغيرات، a (int) و b (double) و c (int) بالقيم 9 و 2.6 و 11 (على التوالي).
بعد ذلك، قم بتهيئة المتغيرات التالية:
d (int)الذي سيحمل نتيجةamodulo2e (int)الذي سيحمل نتيجةamodulo3f (double)الذي سيحمل نتيجةbmodulo1.5g (double)الذي سيحمل نتيجةbmodulo3.9h (int)الذي سيحمل نتيجةcmodulo10
تحقق من النتيجة وشاهد كيف تؤثر المقسوم والمقسوم عليه المختلفان على النتيجة.
ورقة مرجعية
يعطي عامل باقي القسمة (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;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص