معامل باقي القسمة (Modulo)
جزء من قسم Fundamentals في رحلة C++ على Coddy — الدرس 17 من 74.
يعطي عامل باقي القسمة % باقي عملية القسمة. في لغة ++C، يتم استخدامه بصيغة بسيطة:
result = dividend % divisor;- المقسوم: العدد الذي يتم تقسيمه.
- المقسوم عليه: العدد الذي يقسم المقسوم.
- النتيجة: باقي عملية القسمة.
على سبيل المثال:
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);
// result is 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
تحقق من النتيجة وشاهد كيف تؤثر المقسوم والمقسوم عليه المختلفان على النتيجة.
جرّب بنفسك
#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)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوص