Kodax

العمليات الحسابية — أساسيات C++

العمليات الحسابية

العمليات الأساسية

+ - * / و % (باقي القسمة، للأعداد الصحيحة فقط).

⚠️ القسمة الصحيحة

cout << 7 / 2;      // 3  (وليس 3.5!)
cout << 7.0 / 2;    // 3.5

إذا كان الطرفان صحيحين، تكون القسمة صحيحة ويُحذف الكسر. هذا يفاجئ القادمين من Python. الحل أن يكون أحد الطرفين عشرياً: static_cast<double>(sum) / count.

الزيادة والنقصان

int i = 5;
i++;        // i = 6
int a = i++;   // a = 6 ثم i = 7  (لاحقة: استخدم ثم زِد)
int b = ++i;   // i = 8 ثم b = 8  (سابقة: زِد ثم استخدم)

لا تكتب أكثر من ++ على نفس المتغير في تعبير واحد مثل i++ + i++: النتيجة غير مضمونة.

الإسناد المركب

+= -= *= /= %=.

أولوية العمليات

الأقواس، ثم * / %، ثم + -. عند الشك استخدم الأقواس.

الفيضان (Overflow)

int له حد أقصى (حوالي 2.1 مليار). تجاوزه لا يعطي خطأ بل نتيجة خاطئة:

int big = 2000000000;
int doubled = big * 2;             // ❌ فيضان: سلوك غير معرّف
long long safe = 2LL * big;        // ✅ 4000000000

استخدم long long للأعداد الكبيرة (مثل المضروب أو المبالغ بالفلس).

دوال <cmath>

| الدالة | المثال |

|---|---|

| pow(x, y) | pow(2, 10) ← 1024 |

| sqrt(x) | الجذر التربيعي |

| abs(x) | القيمة المطلقة |

| ceil / floor / round | التقريب لأعلى، لأسفل، لأقرب |

pow ترجع double؛ لا تستخدمها للقوى الصحيحة الصغيرة داخل حلقات (x * x أدق وأسرع).

تمرين

اقرأ عدد ثوانٍ، واطبعه بصيغة ساعات:دقائق:ثوانٍ باستخدام / و %، ثم احسب متوسط ثلاث درجات صحيحة بشكل صحيح (عشري).

#include <iostream>
#include <cmath>  // للدوال الرياضية
using namespace std;

int main() {
    int a = 10, b = 3;
    
    // العمليات الأساسية
    cout << "a + b = " << (a + b) << endl;  // 13
    cout << "a - b = " << (a - b) << endl;  // 7
    cout << "a * b = " << (a * b) << endl;  // 30
    cout << "a / b = " << (a / b) << endl;  // 3 (قسمة صحيحة!)
    cout << "a % b = " << (a % b) << endl;  // 1
    
    // قسمة عشرية
    double x = 10.0, y = 3.0;
    cout << "x / y = " << (x / y) << endl;  // 3.333...
    
    // عمليات الإسناد
    int num = 10;
    num += 5;   // num = num + 5 = 15
    num -= 3;   // num = 12
    num *= 2;   // num = 24
    num /= 4;   // num = 6
    
    // الزيادة والنقصان
    int i = 5;
    cout << i++ << endl;  // 5 (يطبع ثم يزيد)
    cout << i << endl;    // 6
    cout << ++i << endl;  // 7 (يزيد ثم يطبع)
    
    // الدوال الرياضية
    cout << "pow(2, 3) = " << pow(2, 3) << endl;    // 8
    cout << "sqrt(16) = " << sqrt(16) << endl;      // 4
    cout << "abs(-5) = " << abs(-5) << endl;        // 5
    cout << "ceil(3.2) = " << ceil(3.2) << endl;    // 4
    cout << "floor(3.8) = " << floor(3.8) << endl;  // 3
    cout << "round(3.5) = " << round(3.5) << endl;  // 4
    
    // أمثلة عملية
    double price = 100;
    double discount = 20;
    double finalPrice = price - (price * discount / 100);
    cout << "السعر النهائي: " << finalPrice << endl;
    
    return 0;
}
اختبر فهمك