عملية الرفع إلى قوة باستخدام Recursion

-أكتب recursive function تستقبل عددين صحيحين الأول هو “الأساس base” والثاني هو “الأس power” ثم تقوم بحساب عملية الرفع إلى قوة وتعمل return للنتيجة .

الحل:

#include <iostream>
using namespace std;

int power(int b, int p); //recursive function prototype

void main()
{
 int b , p;

 cout << "Enter two numbers ";
 cin >> b >> p;
 cout <<b<<"^"<<p<<" = "<< power(b, p) << endl;

 system("pause");
}

int power(int b, int p)
{
 if (p == 1) return b;
 else return b*power(b, p - 1);
}

 

Advertisements

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

-أكتب برنامج يعرض قائمة العمليات الحسابية ( × , + , – , ÷ , ^ ) وخيار الخروج “Exit” ويطلب من المستخدم الاختيار من القائمة ثم يقرأ منه الرقمين الذين سيجري عليهما العملية الحسابية إذا لم يختار الخروج ، ويكرر العملية إلى أن يختار المستخدم خيار Exit .

الحل:

#include <iostream>
using namespace std;

int main()
{
    int num1, num2, Choice;

do{
    cout << "-------------Calculator----------------\n";

    cout << "Choose the operation:\n";
    cout << "1. Addition\n";
    cout << "2.Subtracting\n";
    cout << "3.Multiplication\n";
    cout << "4.Division\n";
    cout << "5.Power\n";
    cout << "6.Exit\n\n";
    cin >> Choice;
    
    while(Choice<1 || Choice>6)
    {cout << "Invalid input, Please enter your choice again: "; cin >> Choice;}

    if (Choice!=6)
    {
        cout << "\nEnter Two Numbers:\n";
        cin >> num1 >> num2;

        switch (Choice)
        {
        case 1: cout << "The Result : " << num1 << " + " << num2 << " = " << num1 + num2 << endl<<endl; break;
        case 2: cout << "The Result : " << num1 << " - " << num2 << " = " << num1 - num2 << endl<<endl; break;
        case 3: cout << "The Result : " << num1 << " x " << num2 << " = " << num1 * num2 << endl<<endl; break;
        case 4: cout << "The Result : " << num1 << " ÷ " << num2 << " = " << num1 / num2 << endl<<endl; break;
        case 5: cout << "The Result : " << num1 << " ^ " << num2 << " = " << pow(num1, num2) << endl<<endl; break;
        }//End switch

    }//End if

    } while (Choice != 6);
    
    system("pause");
    return 0;
}

السطر رقم 20 : يتم اختبار اختيار المستخدم ، فإذا قام بإدخال رقم غير موجود في القائمة تظهر رسالة الخطأ مع طلب إدخال خيار آخر وتتكرر العملية إلى أن يدخل خيارًا صحيحيًا ، أي بعد هذه العملية نضمن أن الخيار المُدخل صحيح وسوف يكون أحد الأعداد الظاهرة في القائمة (1-2-3-4-5-6 ).

السطر رقم 23 : ماذا لو اختار المستخدم الخيار الأخير Exit ؟! ليس اختيار خاطئ ، وفي الوقت نفسه يجب أن لايمر الـ compiler على كود الـ switch وأن لايطلب إدخال الرقمين لهذه الأسباب تم وضع الـ if .

السطر رقم 34 : الاختيار رقم 5 وهو عملية الرفع إلى قوة ، يتم استخدام دالة الـ power والتي يمثّل فيها num1 الأساس و num2 الأس

السطر رقم 40 : شرط الـ while هو أن يكون المستخدم لم يختار الخروج ، لأنه كما طلب في السؤال يجب تكرار عملية ظهور قائمة العمليات الحسابية إلى ان يختار المستخدم Exit .

*نلاحظ أنه لم نضع الـ default للـ switch ؛ وذلك لأنه عند تتبع الكود نجد عند الوصول للـ switch يكون Choice يحمل أحد الأرقام من 1 إلى 5 ويستحيل أن يحمل غير هذه الأرقام لذلك لاداعي لوجود الـ default .