معامل باقي القسمة (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لماذا؟ لا يتسع المقسوم عليه في المقسوم ولو مرة واحدة، لذا يكون المقسوم بأكمله هو الباقي.
التحدي
مبتدئاكتب شيفرة تهيّئ ثلاثة متغيرات، a (int) وb (double) وc (int) بالقيم 9 و2.6 و11 (على الترتيب).
بعد ذلك، هيّئ المتغيرات التالية:
d (int)الذي سيحتفظ بباقي قسمةaعلى2e (int)الذي سيحتفظ بباقي قسمةaعلى3f (double)الذي سيحتفظ بباقي قسمةbعلى1.5g (double)الذي سيحتفظ بباقي قسمةbعلى3.9h (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;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)الزيادة والنقصانالزيادة والنقصان اللاحقةاختصارات العمليات الحسابيةمعاملات المقارنةمقارنة النصوصتدرّب بنفسك: مترجم C++ عبر الإنترنت