منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

تدريبات متدرجة لمراجعة البرمجة بلغة ++C

اذهب الى الأسفل

تدريبات متدرجة لمراجعة البرمجة بلغة ++C Empty تدريبات متدرجة لمراجعة البرمجة بلغة ++C

مُساهمة من طرف Admin في الأربعاء يونيو 26, 2019 8:49 pm

تدريبات متدرجة لمراجعة البرمجة بلغة ++C

التدريب رقم 1 :
برنامج لعرض عبارة ترحيب
برنامج بسيط لعرض العبارة Hello, C++ World! على الشاشة . نظرًا لأنه برنامج بسيط جدًا ، فغالبًا ما يستخدم لتوضيح بناء جملة syntax لغة البرمجة وهيكل البرنامج .

الكود:
#include <iostream>
using namespace std;

int main()
{
    cout << "Hello, C++  World!\n";
    return 0;

Output
Hello, C++ World!

التدريب رقم 2 :
برنامج لطباعة (عرض) عدد صحيح يتم إدخاله بمعرفة المستخدم .
في هذا المثال ، ستتعرف على طباعة العدد الصحيح integer الذي أدخله المستخدم باستخدام عبارة cout وعبارة cin.


الكود:
#include <iostream>
using namespace std;

int main()
{   
    int number;

    cout << "Enter an integer: ";
    cin >> number;

    cout << "You entered " << number << endl;   
    return 0;
}
 

Output
Enter an integer: 23
You entered 23

يطلب هذا البرنامج من المستخدم إدخال عدد صحيح .
عندما يقوم المستخدم بإدخال عدد صحيح ، يتم تخزينه في المتغير number باستخدام cin.
ثم يتم عرضه على الشاشة باستخدام cout.


التدريب رقم 3 :
برنامج لجمع عددين صحيحين .
في هذا البرنامج ، يُطلب من المستخدم إدخال عددين صحيحين integers . بعد ذلك ، يتم تخزين مجموع هذين العددين الصحيحين في متغير وعرضه على الشاشة.

الكود:
 
#include <iostream>
using namespace std;

int main()
{
    int firstNumber, secondNumber, sumOfTwoNumbers;
   
    cout << "Enter two integers: ";
    cin >> firstNumber >> secondNumber;

    // sum of two numbers is stored in variable sumOfTwoNumbers
    sumOfTwoNumbers = firstNumber + secondNumber;

    // Prints sum
    cout << firstNumber << " + " <<  secondNumber << " = " << sumOfTwoNumbers                        <<endl;   

    return 0;
}


Output
Enter two integers: 4
5
4 + 5 = 9

في هذا البرنامج ، يُطلب من المستخدم إدخال عددين صحيحين. يتم تخزين هذه الأعداد الصحيحة فى اثنين من المتغيرات firstNumber و secondNumber على التوالي .
بعد ذلك ، يتم إضافة (جمع) المتغيرات firstNumber و secondNumber باستخدام عامل الجمع + وتخزينها في المتغير sumOfTwoNumbers.
أخيرًا ، يتم عرض sumOfTwoNumbers على الشاشة.

التدريب رقم 4 :
برنامج لإيجاد خارج القسمة Quotient والباقى Remainder
في هذا المثال ، سوف تتعلم كيفية إيجاد خارج (نتيجة) القسمة وباقي القسمة من معطيات المقسوم dividend (البسط) والمقسوم عليه (المقام) divisor.
في هذا البرنامج ، يُطلب من المستخدم إدخال اثنين من الأعداد الصحيحة (المقسوم عليه divisor و المقسوم dividend) ويحسب نتيجة (حاصل) القسمة quotient والباقي remainder .
لحساب خارج القسمة والباقي ، يجب أن يكون كل من المقسوم عليه divisor والقاسم dividend عددًا صحيحًا.

الكود:

#include <iostream>
using namespace std;

int main()
{   
    int divisor, dividend, quotient, remainder;

    cout << "Enter dividend: ";
    cin >> dividend;

    cout << "Enter divisor: ";
    cin >> divisor;

    quotient = dividend / divisor;
    remainder = dividend % divisor;

    cout << "Quotient = " << quotient << endl;
    cout << "Remainder = " << remainder << endl;

    return 0;
}
 

Output

Enter dividend: 13
Enter divisor: 4
Quotient = 3
Remainder = 1

يقوم عامل القسمة / بحساب حاصل (نتيجة) القسمة quotient (إما بين المتغيرات الحقيقية العائمة float أو العدد الصحيح integer ). يقوم معامل المعامل modulus operator % (عامل الباقى) بحساب الباقي remainder عندما يتم قسمة عدد صحيح على آخر (لا يمكن استخدام معامل الباقى لمتغيرات النوع العائم).

التدريب رقم 5 :
برنامج لإيجاد حجم Size أنواع البيانات int, float, double , char ، على النظام الخاص بك
سوف يتم الاستعلام عن حجم 4 متغيرات من النوع int, float, double , char . يتم تقييم حجم كل نوع متغير باستخدام العامل sizeof .
لإيجاد حجم المتغير يتم استخدام العامل sizeof بالصيغة :
sizeof(dataType);


الكود:
#include <iostream>
using namespace std;

int main()
{   
    cout << "Size of char: " << sizeof(char) << " byte" << endl;
    cout << "Size of int: " << sizeof(int) << " bytes" << endl;
    cout << "Size of float: " << sizeof(float) << " bytes" << endl;
    cout << "Size of double: " << sizeof(double) << " bytes" << endl;

    return 0;
}


Output
Size of char: 1 byte
Size of int: 4 bytes
Size of float: 4 bytes
Size of double: 8 bytes



ملحوظة : قد تحصل على نتيجة مختلفة إذا كنت تستخدم كمبيوتر قديم .

Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تدريبات متدرجة لمراجعة البرمجة بلغة ++C Empty رد: تدريبات متدرجة لمراجعة البرمجة بلغة ++C

مُساهمة من طرف Admin في الأربعاء يونيو 26, 2019 10:19 pm

التدريب رقم 6 :
برنامج تبديل(مبادلة) swap عددين
يحتوي هذا المثال على تقنيتين مختلفتين لتبديل الأعداد . يستخدم البرنامج الأول متغيرًا مؤقتًا temporary لمبادلة الأعداد ، بينما لا يستخدم البرنامج الثاني متغيرات مؤقتة.

الكود:

// Swap Numbers (Using Temporary Variable)
#include <iostream>
using namespace std;

int main()
{
    int a = 5, b = 10, temp;

    cout << "Before swapping." << endl;
    cout << "a = " << a << ", b = " << b << endl;

    temp = a;
    a = b;
    b = temp;

    cout << "\nAfter swapping." << endl;
    cout << "a = " << a << ", b = " << b << endl;

    return 0;


الكود:
Output
Before swapping.
a = 5, b = 10

After swapping.
a = 10, b = 5



لإجراء المبادلة في المثال أعلاه ، يتم استخدام ثلاثة متغيرات. يتم نسخ محتويات المتغير الأول إلى المتغير المؤقت temp. ثم ، يتم نسخ محتويات المتغير الثاني إلى المتغير الأول. أخيرًا ، يتم نسخ محتويات المتغير temp مرة أخرى إلى المتغير الثاني الذي يكمل عملية المبادلة.
يمكنك أيضًا إجراء المبادلة باستخدام متغيرين فقط على النحو التالي.


الكود:
// Swap Numbers Without Using Temporary Variables
#include <iostream>
using namespace std;

int main()
{
   
    int a = 5, b = 10;

    cout << "Before swapping." << endl;
    cout << "a = " << a << ", b = " << b << endl;

    a = a + b;
    b = a - b;
    a = a - b;

    cout << "\nAfter swapping." << endl;
    cout << "a = " << a << ", b = " << b << endl;

    return 0;
}


خرج هذا البرنامج هو نفسه مثل خرج البرنامج الأول أعلاه .

التدريب رقم 7 :
برنامج للتحقق مما إذا كان العدد زوجيًا Even أو فرديا Odd .
في هذا المثال ، تستخدم عبارة if...else للتحقق مما إذا كان العدد الذي أدخله المستخدم هو زوجي أم فردى .
تسمى الأعداد الصحيحة التي تقبل القسمة تمامًا (بدون باقى) على 2 بالأعداد الزوجية.
وتُعرف الأعداد الصحيحة التي لا تقبل القسمة تمامًا على 2 بالعدد الفردي.
للتحقق مما إذا كان عدد صحيح هو زوجي أم فردى ، يتم حساب الباقي عندما يتم قسمة العدد على 2 باستخدام معامل الباقى % . إذا كان الباقي يساوي صفر ، فهذا العدد يكون زوجى even ، إذا لم يكن الباقى بصفر فإن ذلك العدد يكون فرديا odd.


الكود:
// Check Whether Number is Even or Odd using if else
#include <iostream>
using namespace std;

int main()
{
    int n;

    cout << "Enter an integer: ";
    cin >> n;

    if ( n % 2 == 0)
        cout << n << " is even." << endl;
    else
        cout << n << " is odd."  << endl;

    return 0;


الكود:
 Output

Enter an integer: 23
23 is odd.

في هذا البرنامج ، تم استخدام عبارة if..else للتحقق مما إذا كانت n%2 == 0 صواب true أم لا. إذا كان هذا التعبير صحيحًا true ، فإن n تكون زوجى even وإن لم تكن صحيحة فإن n تكون فردية odd .
يمكنك أيضًا استخدام عامل الشرط الثلاثى بدلاً من if..else statement. العامل الثلاثي عبارة عن تدوين قصير (مختصر) لعبارة if…else .


الكود:
// Check Whether Number is Even or Odd using ternary operators
#include <iostream>
using namespace std;

int main()
{
    int n;

    cout << "Enter an integer: ";
    cin >> n;
   
    (n % 2 == 0) ? cout << n << " is even."<<endl :  cout << n << " is odd."<<endl;
   
    return 0;
}




التدريب رقم 8 :
برنامج للتحقق مما إذا كان الحرف هو حرف متحرك (لين) Vowel أو ساكن Consonant .
في هذا المثال ، تستخدم عبارة if…else للتحقق مما إذا كانت الحروف الأبجدية التي أدخلها المستخدم عبارة عن حرف متحرك أو ثابت.
تُعرف الخمسة حروف الأبجدية a و e و i و o و u على أنها أحرف متحركة vowels. جميع الحروف الهجائية الأخرى باستثناء هذه الحروف الهجائية الخمسة تعرف على أنها حروف ساكنة .
هذا البرنامج يفترض أن المستخدم سوف يدخل دائما حروف أبجدية .



الكود:
// Check Vowel or a Consonant
#include <iostream>
using namespace std;

int main()
{
    char c;
    int isLowercaseVowel, isUppercaseVowel;

    cout << "Enter an alphabet: ";
    cin >> c;

    // evaluates to 1 (true) if c is a lowercase vowel
    isLowercaseVowel = (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');

    // evaluates to 1 (true) if c is an uppercase vowel
    isUppercaseVowel = (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U');

    // evaluates to 1 (true) if either isLowercaseVowel or isUppercaseVowel is true
    if (isLowercaseVowel || isUppercaseVowel)
        cout << c << " is a vowel."<<endl;
    else
        cout << c << " is a consonant."<<endl;

    return 0;
}


الكود:
Output
Enter an alphabet: u
u is a vowel.
 

يتم حفظ الحرف المدخل بمعرفة المستخدم فى المتغير c .
يتم تقييم المتغير isLowerCaseVowel بالقيمة true إذا كان c حرف صغير متحرك lowercase vowel ، وبالقيمة false لأى حرف آخر .
بالمثل يتم تقييم المتغير isUpperCaseVowel بالقيمة true إذا كان c حرف كبير متحرك uppercase vowel ، وبالقيمة false لأى حرف آخر .

إذا كان كل من isLowerCaseVowel و isUpperCaseVowel بالقيمة true ، فإن الحرف المدخل يكون متحرك vowel ، وإن لم يكن كذلك فإن الحرف يكون ساكن consonant .

التدريب رقم 9 :
إيجاد أكبر عدد بين ثلاثة أعداد

في هذا المثال ، سوف تتعلم إيجاد أكبر عدد من بين ثلاثة أعداد باستخدام عبارات if و if…else و if…else المتداخلة .
في هذا البرنامج ، يطلب من المستخدم إدخال ثلاثة أعداد . ثم يوجد هذا البرنامج أكبر عدد من بين الثلاثة أعداد التى يدخلها المستخدم ويعرضها مع رسالة مناسبة.
يمكن استخدام هذا البرنامج بأكثر من طريقة.




الكود:
// 1: Find Largest Number Using if Statement
#include <iostream>
using namespace std;

int main()
{   
    float n1, n2, n3;

    cout << "Enter three numbers: ";
    cin >> n1 >> n2 >> n3;

    if(n1 >= n2 && n1 >= n3)
    {
        cout << "Largest number: " << n1<<endl;
    }

    if(n2 >= n1 && n2 >= n3)
    {
        cout << "Largest number: " << n2<<endl;
    }

    if(n3 >= n1 && n3 >= n2)
    {
        cout << "Largest number: " << n3<<endl;
    }

    return 0;
}


الكود:
Output

Enter three numbers: 2.3
8.3
-4.2
Largest number: 8.3



الكود:
// 2: Find Largest Number Using if...else Statement
#include <iostream>
using namespace std;

int main()
{
    float n1, n2, n3;

    cout << "Enter three numbers: ";
    cin >> n1 >> n2 >> n3;

    if((n1 >= n2) && (n1 >= n3))
        cout << "Largest number: " << n1<<endl;
    else if ((n2 >= n1) && (n2 >= n3))
        cout << "Largest number: " << n2<<endl;
    else
        cout << "Largest number: " << n3<<endl;
   
    return 0;
}



الكود:
Output

Enter three numbers: 2.3
8.3
-4.2
Largest number: 8.3

الكود:
// 3: Find Largest Number Using Nested if...else statement
#include <iostream>
using namespace std;

int main()
{
    float n1, n2, n3;

    cout << "Enter three numbers: ";
    cin >> n1 >> n2 >> n3;

    if (n1 >= n2)
    {
        if (n1 >= n3)
            cout << "Largest number: " << n1<<endl;
        else
            cout << "Largest number: " << n3<<endl;
    }
    else
    {
        if (n2 >= n3)
            cout << "Largest number: " << n2<<endl;
        else
            cout << "Largest number: " << n3<<endl;
    }

    return 0;
}


الكود:
Output

Enter three numbers: 2.3
8.3
-4.2
Largest number: 8.3


التدريب رقم 10 :
برنامج لإيجاد جميع جذور Roots معادلة تربيعية (من الدرجة الثانية) Quadratic Equation . (تطبيق على عبارة if…else )
يقبل هذا البرنامج معاملات coefficients المعادلة التربيعية من المستخدم ويعرض الجذور (كل من الجذور الحقيقية real والمركبة complex تعتمد على المميز discriminant ).
فى المعادلة التربيعية ax2+bx+c = 0 ( حيث a,b,c هى المعاملات coefficients ) ، تعطى جذورها بالصيغة التالية

تدريبات متدرجة لمراجعة البرمجة بلغة ++C E71EEDE1668446C09D75298866C733BD


الحد b2-4ac يعرف بمميز discriminant المعادلة التربيعية . المميز يخبر عن طبيعة الجذور :
• إذا كان المميز أكبر من الصفر ، فإن الجذور تكون حقيقية ومختلفة .
• إذا كان المميز يساوى الصفر ، فإن الجذور تكون حقيقية ومتساوية .
• إذا كان المميز أقل من الصفر فإن الجذور تكون مركبة ومختلفة .

تدريبات متدرجة لمراجعة البرمجة بلغة ++C E847AB1A38E54A2FBB410762227221CB



الكود:
// Roots of a Quadratic Equation
#include <iostream>
#include <cmath>
using namespace std;

int main() {

    float a, b, c, x1, x2, discriminant, realPart, imaginaryPart;
    cout << "Enter coefficients a, b and c: ";
    cin >> a >> b >> c;
    discriminant = b*b - 4*a*c;
   
    if (discriminant > 0)
    {
        x1 = (-b + sqrt(discriminant)) / (2*a);
        x2 = (-b - sqrt(discriminant)) / (2*a);
        cout << "Roots are real and different." << endl;
        cout << "x1 = " << x1 << endl;
        cout << "x2 = " << x2 << endl;
    }
   
    else if (discriminant == 0)
    {
        cout << "Roots are real and same." << endl;
        x1 = (-b + sqrt(discriminant)) / (2*a);
        cout << "x1 = x2 =" << x1 << endl;
    }

    else
    {
        realPart = -b/(2*a);
        imaginaryPart =sqrt(-discriminant)/(2*a);
        cout << "Roots are complex and different."  << endl;
        cout << "x1 = " << realPart << "+" << imaginaryPart << "i" << endl;
        cout << "x2 = " << realPart << "-" << imaginaryPart << "i" << endl;
    }

    return 0;
}



الكود:
Output

Enter coefficients a, b and c: 4
5
1
Roots are real and different.
x1 = -0.25
x2 = -1

فى هذا البرنامج يتم استخدام دالة المكتبة sqrt() لإيجاد الجذر التربيعى لعدد .

Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تدريبات متدرجة لمراجعة البرمجة بلغة ++C Empty رد: تدريبات متدرجة لمراجعة البرمجة بلغة ++C

مُساهمة من طرف Admin في الخميس يونيو 27, 2019 11:39 am

التدريب رقم 11 :
برنامج لحساب مجموع الأعداد الطبيعية Natural Numbers . (تطبيق على حلقة for )
الأعداد الصحيحة الموجبة 1,2,3,4,… تُعرف بالأعداد الطبيعية.
يأخذ هذا البرنامج عددًا صحيحًا موجبًا من المستخدم (افترض إن المستخدم أدخل n) ، ثم يعرض هذا البرنامج قيمة 1+2+3+…..+n .


الكود:
// Sum of Natural Numbers using for loop
#include <iostream>
using namespace std;

int main()
{
    int n, sum = 0;

    cout << "Enter a positive integer: ";
    cin >> n;

    for (int i = 1; i <= n; ++i) {
        sum += i; //sum = sum + i;
    }

    cout << "Sum = " << sum<<endl;
    return 0;
}


الكود:
 Output

Enter a positive integer: 50
Sum = 1275

يفترض هذا البرنامج أن المستخدم يقوم دائمًا بإدخال رقم موجب.
إذا أدخل المستخدم رقمًا سالبًا ، فسيتم عرض Sum = 0 ويتم إنهاء البرنامج.


التدريب رقم 12 :
برنامج للتحقق من السنة الكبيسة Leap Year ( تطبيق على عبارة if…else المتداخلة )
يتحقق هذا البرنامج من أن عامًا (عددًا صحيحًا) يدخله المستخدم هو سنة كبيسة أم لا.
كل السنوات التي تكون قابلة للقسمة تمامًا على 4 هي سنوات كبيسة leap years ، وسنوات القرن (السنوات التي تنتهي بـ 00) تكون سنة كبيسة فقط إذا كانت قابلة للقسمة تمامًا على 400.
على سبيل المثال: 2012 ، 2004 ، 1968 إلخ هي سنوات كبيسة ( تقبل القسمة على 4 بدون باقى ) ، لكن ، 1971 ، 2006 ، إلخ ، ليست سنة كبيسة ، تسمى سنة بسيطة (لا تقبل القسمة على 4 ) . وبالمثل ، 1200 ، 1600 ، 2000 ، 2400 هي سنوات كبيسة (سنوات قرن تقبل القسمة على 400 ) ولكن ، 1700 ، 1800 ، 1900 وغيرها ليست سنوات كبيسة ( سنوات قرن تقبل القسمة على 100 ولكنها لا تقبل القسمة على 400 ) .
تحتوي السنة الكبيسة على يوم إضافي يضاف للحفاظ على السنة التقويمية متزامنة مع السنة الفلكية.
في البرنامج أدناه ، يُطلب من المستخدم إدخال سنة وهذا البرنامج يتحقق مما إذا كانت السنة التي أدخلها المستخدم سنة كبيسة أم لا.


الكود:
// Check if a year is leap year or not
#include <iostream>
using namespace std;

int main()
{
    int year;

    cout << "Enter a year: ";
    cin >> year;

    if (year % 4 == 0)   // if exactly divisible by four ?
    {
        if (year % 100 == 0) // yes , if exactly divisible by 100 also
        {
            if (year % 400 == 0) // yes , if exactly divisible by 400 also
                cout << year << " is a leap year."<<endl;//yes
            else // no
                cout << year << " is not a leap year." <<endl;// divisible by 4 and 100 and 400
        }
        else // no , not divisible by 100
            cout << year << " is a leap year." <<endl;
    }
    else    //no divisible by 4      
        cout << year << " is not a leap year." <<endl;

    return 0;
}



الكود:
 Output

Enter a year: 2014
2014 is not a leap year.

في البرنامج أعلاه ، إذا كانت السنة قابلة للقسمة على 4 if (year % 4 == 0) ، عندئذ يتم التحقق مما إذا كانت قابلة للقسمة على 100 if (year % 100 == 0) . إذا كانت قابلة للقسمة على 100 ، عندئذ يتم التحقق مما إذا كانت قابلة للقسمة على 400 if (year % 400 == 0) . إذا كانت الإجابة نعم ، عندئذ تكون السنة سنة كبيسة. خلاف ذلك ، تكون غير كبيسة . إذا كانت السنة غير قابلة للقسمة على 100 ، فهي سنة كبيسة. إذا كانت السنة غير قابلة للقسمة على 4 ، فإنها ليست سنة كبيسة.

يمكن تنفيذ نفس البرنامج باستخدام الكود التالى :


الكود:
#include<iostream>
using namespace std;

int main()
{
  int year = 2016;
  if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
      cout<<year<<" is a leap year";
  else
      cout<<year<<" is not a leap year";
  return 0;
}


في البرنامج أعلاه ، إذا كانت السنة قابلة للقسمة على 4 وand ليست قابلة للقسمة على 100 ، فهي سنة كبيسة. أيضا ، or إذا كانت السنة قابلة للقسمة على 400 ، فهي سنة كبيسة.( تكون السنة كبيسة إذا (قبلت القسمة على 4 وand لم تقبل القسمة على 100 ) أو or تقبل القسمة على 400 )

التدريب رقم 13 :
برنامج لإيجار المضروب Factorial (تطبيق على حلقة for )
مضروب عدد صحيح موجب n يساوي 1*2*3*...n . في هذا المثال سوف تتعلم حساب مضروب عدد باستخدام حلقة for.
لأي رقم موجب n ، يعطى مضروبه factorial بالعلاقة :

الكود:
factorial = n! = 1*2*3...*n

لا يمكن إيجاد مضروب العدد السالب ومضروب 0 يساوي 1.
في البرنامج أدناه ، يطلب من المستخدم إدخال عدد صحيح موجب. ثم يتم حساب مضروب هذا العدد وعرضه على الشاشة.



الكود:
// Find Factorial of a given number
#include <iostream>
using namespace std;

int main()
{
    unsigned int n;
    unsigned long factorial = 1;

    cout << "Enter a positive integer: ";
    cin >> n;

    for(int i = 1; i <=n; ++i)
    {
        factorial *= i;// factorial = factorial * i;
    }

    cout << "Factorial of " << n << " = " << factorial<<endl;   
    return 0;
}
 

الكود:
 Output

Enter a positive integer: 12
Factorial of 12 = 479001600

هنا المتغير factorial من النوع unsigned long ، وذلك لأن مضروب factorial عدد يكون دائمًا موجب ، ولهذا السبب تتم إضافة النعت (الوصف) unsigned إليه. نظرًا لأن المضروب كعدد يمكن أن يكون كبيرًا ، يتم تعريفه على أنه long .
في البرنامج أعلاه ، يتم تشغيل حلقة for من 1 إلى n. لكل تكرار للحلقة ، يتم ضرب factorial فى i. القيمة النهائية للمتغير factorial هي نتاج ضرب جميع الأرقام من 1 إلى n .


التدريب رقم 14 :
برنامج لتوليد جدول الضرب Multiplication Table
مثال لإنشاء جدول الضرب لرقم (أدخله المستخدم) باستخدام حلقة for .
// Display Multiplication table up to 10


الكود:
 #include <iostream>
using namespace std;

int main()
{
    int n;

    cout << "Enter a positive integer: ";
    cin >> n;

    for (int i = 1; i <= 10; ++i) {
        cout << n << " * " << i << " = " << n * i << endl;
    }
   
    return 0;
}


الكود:
Output
Enter an integer: 5
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50

يحسب هذا البرنامج أعلاه جدول الضرب حتى 10 فقط. تستخدم حلقة for للتكرار من 1 إلى 10 . فى كل تكرار لحلقة for يتم ضرب العدد n بمتغير الحلقة i ويتم عرض النتيجة .
البرنامج أدناه هو تعديل البرنامج أعلاه حيث يُطلب من المستخدم أيضًا إدخال النطاق الذي يجب عرض جدول الضرب به.


الكود:
// Display multiplication table up to a given range
#include <iostream>
using namespace std;

int main()
{
    int n, range;

    cout << "Enter an integer: ";
    cin >> n;

    cout << "Enter range: ";
    cin >> range;
   
    for (int i = 1; i <= range; ++i) {
        cout << n << " * " << i << " = " << n * i << endl;
    }
   
    return 0;
}



الكود:
 Output
Enter an integer: 8
Enter range: 12
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72
8 * 10 = 80
8 * 11 = 88
8 * 12 = 96


التدريب رقم 15 :
برنامج لعرض سلسلة فيبوناتشي Fibonacci Series( تطبيق على حلقة for وحلقة while )
في هذه المثال ، سوف تتعلم كيفية طباعة سلسلة fibonacci (حتى الحد النونى nth term ، وحتى عدد معين).

تدريبات متدرجة لمراجعة البرمجة بلغة ++C 9D1CEAE958AF4C669B5C1BC157FCEE74

تسلسل فيبوناتشي عبارة عن سلسلة حيث يكون الحد التالي next term هو مجموع الحدين السابقين. أول حدين من تسلسل فيبوناتشي هي 0 متبوعة بالرقم 1.

الكود:
The Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21



الكود:
// Fibonacci Series up to n number of terms
#include <iostream>
using namespace std;

int main()
{
    int n, t1 = 0, t2 = 1, nextTerm = 0;

    cout << "Enter the number of terms: ";
    cin >> n;

    cout << "Fibonacci Series: ";

    for (int i = 1; i <= n; ++i)
    {
           // Prints the first two terms.
           if(i == 1)
           {
               cout << " " << t1<< ',';
                 continue;
           }
       
if(i == 2)
           {
               cout << t2 << ',';
               continue;
           }

        nextTerm = t1 + t2;
        t1 = t2;
        t2 = nextTerm;
       
        cout << nextTerm << ',';
    }
cout<<endl;
    return 0;
}


الكود:
Output

Enter the number of terms: 10
Fibonacci Series: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,


الكود:
 //Program to Generate Fibonacci Sequence Up to a Certain Number
#include <iostream>
using namespace std;

int main()
{
    int t1 = 0, t2 = 1, nextTerm = 0, n;

    cout << "Enter a positive number: ";
    cin >> n;

    // displays the first two terms which is always 0 and 1
    cout << "Fibonacci Series: " << t1 << ", " << t2 << ", ";

    nextTerm = t1 + t2;

    while(nextTerm <= n)
    {
        cout << nextTerm << ", ";
        t1 = t2;
        t2 = nextTerm;
        nextTerm = t1 + t2;
    }
    cout<<endl;
    return 0;
}



الكود:
 Output
Enter a positive integer: 100
Fibonacci Series: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,

Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تدريبات متدرجة لمراجعة البرمجة بلغة ++C Empty رد: تدريبات متدرجة لمراجعة البرمجة بلغة ++C

مُساهمة من طرف Admin في الخميس يونيو 27, 2019 8:13 pm

التدريب رقم 16 :
برنامج لإيجاد القاسم (المقسوم عليه) المشترك الأكبر GCD greatest common divisor أو العامل المشترك الأعلى HCF
فيمل يلى أمثلة على طرق مختلفة لحساب GCD لعددين صحيحين باستخدام الحلقات وعبارات اتخاذ القرار.
يُعرف أكبر عدد صحيح يقسم فى نفس الوقت اثنين من الأعداد الصحيحة بشكل تام (بدون باقى) بالقاسم (المقسوم عليه) المشترك الأكبر GCD أو HCF (العامل المشترك الأعلى ) بين هذين العددين .على سبيل المثال القاسم المشترك الأكبر بين 12 و 8 هو 4 . ولإيجاده : نحلل كلا من العددين إلى عواملها الأولية ثم نختار العوامل المشتركة بينهما ونضربهم فى بعضهم .
GCD أكبر مقسوم عليه مشترك Greatest Common Divisor أو HCF العامل المشترك الأكبر Highest Common Factor بين عددين هو أكبر عدد يقسم كل منهما .

تدريبات متدرجة لمراجعة البرمجة بلغة ++C 7AA1D67DCFF64263A13C6448AD9D8343

على سبيل المثال GCD أو HCF بين 20 و 28 هو 4 ، وبين 98 و 56 هو 14 .
الحل البسيط هو إيجاد جميع العوامل الأولية لكلا العددين ، ثم إيجاد جميع العوامل المشتركة الموجودة في كلا العددين . أخيرًا نوجد حاصل ضرب هذه العوامل المشتركة فيكون هو المقسوم عليه المشترك الأكبر أو العامل المشترك الأكبر .
الحل الفعال هو استخدام الخوارزمية الإقليدية Euclidean Algorithm وهي الخوارزمية الرئيسية المستخدمة لهذا الغرض. الفكرة هي أن GCD بين عددين لا يتغير إذا تم طرح العدد الأصغر من العدد الأكبر.
• إذا طرحنا العدد الأصغر من العدد الأكبر (نخفض العدد الأكبر) ، فلن يتغير GCD. لذلك إذا واصلنا طرحنا مرارًا وتكرارًا للعدد الأكبر ، فسينتهي بنا الأمر إلى GCD.
• بدلاً من الطرح ، إذا قمنا بتقسيم العدد الأصغر ، فإن الخوارزمية تتوقف عندما نجد الباقي 0.

من العدد الأكبر ، قم بطرح العدد الأصغر عدة مرات قدر الإمكان حتى يكون لديك عدد أصغر من العدد الصغير. (أو بدون الحصول على إجابة سالبة ) الآن ، استخدم العدد الصغير الأصلي ونتيجة الطرح كرر العملية. كرر هذا حتى تكون النتيجة الأخيرة هي صفر ، و GCF هو العدد الناتج الأصغر قبل الأخير .
مثال :

الكود:
 Example: Find the GCF (18, 27)
27 - 18 = 9
18 - 9 = 9
9 - 9 = 0

لذا ، فإن أكبر عامل مشترك بين 18 و 27 هو 9 ، وهي أصغر نتيجة حققناها قبل بلوغنا الصفر .


الكود:
// Find GCD using while loop
#include <iostream>
using namespace std;

int main()
{
    int n1, n2;

    cout << "Enter two numbers: ";
    cin >> n1 >> n2;
   
    while(n1 != n2)
    {
        if(n1 > n2)
            n1 -= n2;  //n1 = n1-n2
        else
            n2 -= n1; //n2 = n2-n1
    }

    cout << "HCF = " << n1 <<endl;
    return 0;
}

الكود:
Output
Enter two numbers: 78
52
HCF = 26

الكود:
 n1=78 , n2=52
n1>n2       n1=n1-n2=78-52=26
n2>n1      n2=n2-n1=52-26=26
n1=n2=hcf


في البرنامج أعلاه ، يتم طرح العدد الأصغر من العدد الأكبر ويتم تخزين هذا الرقم بدلاً من العدد الأكبر.
تستمر هذه العملية حتى يصبح عددان متساويين يكون هو HCF.

الكود:
 // Find HCF/GCD using for loop
#include <iostream>
using namespace std;

int main()
{
    int n1, n2, hcf;
    cout << "Enter two numbers: ";
    cin >> n1 >> n2;

    // Swapping variables n1 and n2 if n2 is greater than n1.
    if ( n2 > n1)
    { 
        int temp = n2;
        n2 = n1;
        n1 = temp;
    }
   
    for (int i = 1; i <=  n2; ++i)
    {
        if (n1 % i == 0 && n2 % i ==0)
{
               hcf = i;
            }
    }

    cout << "HCF = " << hcf <<endl;
    return 0;
}



منطق هذا البرنامج بسيط.
في هذا البرنامج ، يتم تخزين إصغر عدد صحيح بين n1 و n2 في n2. ثم يتم تكرار الحلقة من i = 1 إلى i <= n2 وفي كل تكرار ، تزداد قيمة i بمقدار 1.
إذا كان كلا العددين قابلاً للقسمة على i ، فسيتم تخزين هذا الرقم في المتغير hcf.
عند الانتهاء من التكرار ، سيتم تخزين HCF في متغير hcf.

التدريب رقم 17 :
برنامج لإيجاد المضاعف المشترك الأدنى (Lowest Common Multiple)

فيما يلى أمثلة على طرق مختلفة لحساب LCM (المضاعف المشترك الأدنى ) لاثنين من الأعداد الصحيحة باستخدام الحلقات وعبارات اتخاذ القرار.
المضاعف المشترك الأدنى LCM لاثنين من الأعداد الصحيحة a و b هو أصغر عدد صحيح موجب يقبل القسمة على كل من a و b بدون باقى .
• الحل البسيط هو إيجاد جميع العوامل الأولية لكلا العددين ، ثم إيجاد جميع العوامل المشتركة (الاتحاد) الموجودة في كلا العددين . المضاعف المشترك الأدنى LCM هو حاصل ضرب هذه العوامل المشتركة .

تدريبات متدرجة لمراجعة البرمجة بلغة ++C AC7C6DE8DCAA4364BF71B1A8EC6CE7CB



الكود:
// Find LCM
#include <iostream>
using namespace std;

int main()
{
    int n1, n2, max;

    cout << "Enter two numbers: ";
    cin >> n1 >> n2;
   
    // maximum value between n1 and n2 is stored in max
    max = (n1 > n2) ? n1 : n2;

    do
    {
        if (max % n1 == 0 && max % n2 == 0)
        {
            cout << "LCM = " << max <<endl;
            break;
        }
        else
            ++max;
    } while (true);
   
    return 0;
}


الكود:
Output
Enter two numbers: 12
18
LCM = 36

• في البرنامج أعلاه ، يُطلب من المستخدم أن يقوم بإدخال اثنين من الأعداد الصحيحة n1 و n2 ويتم تخزين أكبر هذين الرقمين فى المتغير max .
• يتم تحديد ما إذا كان max يقبل للقسمة على n1 و n2 ، إذا كان قابل للقسمة على كلا الرقمين ، تتم طباعة max (الذي يحتوي عندئذ على LCM) ويتم إنهاء الحلقة.
• إذا لم يكن الأمر كذلك ، يتم زيادة قيمة max بمقدار 1 وتستمر نفس العملية حتى يقبل max القسمة على كل من n1 و n2.

إيجاد LCM باستخدام HCF
المضاعف المشترك الأدنى LCM لعددين يعطى بالعلاقة :

الكود:
LCM = (n1 * n2) / HCF


الكود:
//Find LCM using HCF
#include <iostream>
using namespace std;

int main()
{
    int n1, n2, hcf, temp, lcm;

    cout << "Enter two numbers: ";
    cin >> n1 >> n2;

      //To find hcf on n1 and n2   
    hcf = n1; //use temp variables
    temp = n2;
   
    while(hcf != temp)
    {
        if(hcf > temp)
            hcf -= temp;
        else
            temp -= hcf;
    }

    lcm = (n1 * n2) / hcf;

    cout << "LCM = " << lcm << endl;
    return 0;
}

التدريب رقم 18 :
برنامج لعكس عدد Reverse an Integer
هذا المثال لعكس عدد صحيح أدخله المستخدم . يتم حل هذه المشكلة عن طريق استخدام حلقة while ( لانعرف مسبقا العدد الذى سوف يدخله المستخدم وبالتالى لا نعرف عدد مرات التكرار فلا تصلح حلقة for ) .
وصف البرنامج المطلوب :
يأخذ البرنامج عددا معينًا ويطبع عكسه.
خطوات الحل :
1. يأخذ البرنامج عددا صحيحًا number .
2. باستخدام حلقة while ، يتم عكس أرقام digits العدد number.
3. تتم طباعة الرقم العكسي.
4. الخروج.


الكود:
// C++ Program to Reverse an Integer
#include <iostream>
using namespace std;

int main()
{
    int n, reversedNumber = 0, remainder;

    cout << "Enter an integer: ";
    cin >> n;

    while(n != 0)
    {
        remainder = n%10;
        reversedNumber = reversedNumber*10 + remainder;
        n /= 10;
    }

    cout << "Reversed Number = " << reversedNumber <<endl;

    return 0;
}



الكود:
Output
Enter an integer: 12345
Reversed number = 54321

شرح البرنامج :
1- يأخذ هذا البرنامج مدخلات عدد صحيح من المستخدم ويخزنها في المتغير n.

الكود:
cout << "Enter an integer: ";
cin >> n;

2- ثم يتم تكرار حلقة while حتى يكون n!=0 بالقيمة false .

الكود:
 while(n != 0)

3- في كل تكرار :
• يتم حساب الباقي عندما يتم قسمة قيمة n على 10 ،
• ويتم حساب العدد العكسي reversedNumber . يتم ضرب العدد المعكوس reversedNumber في 10 و يضاف إليه الباقى remainder ،
• وتقل قيمة n 10 أضعاف.

الكود:
 remainder = n%10;
reversedNumber = reversedNumber*10 + remainder;
n /= 10;

4- تستمر الحلقة حتى تصبح n بصفر 0

الكود:
while(n != 0)

5- أخيرًا ، يتم طباعة reversedNumber (الذي يحتوي على العدد المعكوس ) على الشاشة.

الكود:
cout << "Reversed Number = " << reversedNumber <<endl;


التدريب رقم 19 :
برنامج لحساب قوة (أس) power العدد Compute Power
في هذا المثال ، سوف تتعلم حساب قوة (أس ) power العدد يدويًا ، وباستخدام الدالة pow() .
يأخذ هذا البرنامج عددين من المستخدم (عدد الأساس base وعدد الأس exponent ) ويتم حساب القوة من العلاقة :

الكود:
Power of a number = baseexponent 


الكود:
// Compute Power Manually
#include <iostream>
using namespace std;

int main()
{
    int exponent;
    float base, result = 1;

    cout << “Enter base and exponent respectively:  “;
    cin >> base >> exponent;

    cout << base << “^” << exponent << “ = “;

    while (exponent != 0) {
        result *= base;
        --exponent;
    }

    cout << result <<endl;
   
    return 0;
}



الكود:
 Output
Enter base and exponent respectively:  3.4
5
3.4^5 = 454.354

يعمل الأسلوب أعلاه فقط إذا كان الأس exponent عددًا صحيحًا موجبًا.
إذا كنت بحاجة إلى إيجاد قوة العدد مع أي عدد حقيقي (نقطة عائمة) كأس ، يمكنك استخدام الدالة pow() .


الكود:
// Compute power using pow() Function
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    float base, exponent, result;

    cout << “Enter base and exponent respectively:  “;
    cin >> base >> exponent;

    result = pow(base, exponent);

    cout << base << “^” << exponent << “ = “ << result <<endl;
   
    return 0;
}



الكود:
Output
Enter base and exponent respectively:  2.3
4.5
2.3^4.5 = 42.44

التدريب رقم 20 :
برنامج لإيجاد قيمة ASCII للحرف Character .
يحتفظ متغير الحرف بقيمة ASCII (عدد صحيح بين 0 و 127) بدلاً من ذلك الحرف نفسه . تُعرف هذه القيمة بقيمة ASCII.
على سبيل المثال ، قيمة ASCII للحرف 'A' هى 65 .هذا يعنى أنه إذا قمت بتعيين الحرف 'A' لمتغير نوع حرف ، فسيتم تخزين 65 في هذا المتغير بدلاً من 'A' نفسه.

الكود:
// Print ASCII Value in C++
#include <iostream>
using namespace std;

int main()
{
 char c;
 cout << "Enter a character: ";
 cin >> c;
 cout << "ASCII Value of " << c << " is " << int(c);
 return 0;
}


الكود:
Output
Enter a character: p
ASCII Value of p is 112


عندما نطبع بشكل صريح قيمة عدد صحيح لنوع char كما فى int(c) ، تتم طباعة قيمة ASCII المقابلة لها.

Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تدريبات متدرجة لمراجعة البرمجة بلغة ++C Empty رد: تدريبات متدرجة لمراجعة البرمجة بلغة ++C

مُساهمة من طرف Admin في الخميس يونيو 27, 2019 10:13 pm

التدريب 21 :
برنامج للتحقق ما إذا كان العدد متناظر Palindrome أم لا .
هذا البرنامج يعكس reverses عددًا صحيحًا (أدخله المستخدم) باستخدام حلقة while . ثم ، يتم استخدام عبارة if للتحقق مما إذا كان العدد المعكوس يساوي العدد الأصلي أم لا.
يأخذ هذا البرنامج عددًا صحيحًا من المستخدم ويتم عكس ذلك العدد الصحيح.
إذا كان العدد الصحيح المعكوس يساوي العدد الصحيح الذي أدخله المستخدم ، فسيكون هذا العدد متناظر palindrome إن لم يكن هذا العدد يساوى العدد الذى أدخله المستخدم فإن العدد ليس متناظر.



الكود:
// Check Palindrome Number
#include <iostream>
using namespace std;

int main()
{
    int n, num, digit, rev = 0;

    cout << "Enter a positive number: ";
    cin >> num;

    n = num;

    do
    {
        digit = num % 10;
        rev = (rev * 10) + digit;
        num = num / 10;
    } while (num != 0);

    cout << " The reverse of the number is: " << rev << endl;

    if (n == rev)
        cout << " The number is a palindrome." << endl;
    else
        cout << " The number is not a palindrome." << endl;

    return 0;
}




الكود:
Output
Enter a positive number: 12321
The reverse of the number is: 12321
The number is a palindrome.

Enter a positive number: 12331
The reverse of the number is: 13321
The number is not a palindrome.
 


في البرنامج أعلاه ، يُطلب من المستخدم إدخال عدد موجب يتم تخزينه بالمتغير num .
ثم يتم حفظ العدد في متغير آخر n للتحقق منه عند عكس العدد الأصلي.
داخل حلقة do...while ، يتم فصل الرقم الأخير last digit من العدد باستخدام رقم الكود

الكود:
 digit = num % 10;

ثم يتم إضافة هذا الرقم إلى المتغير rev.
قبل إضافة الرقم digit إلى rev ، نحتاج أولاً إلى ضرب البيانات الحالية في المتغير revفى 10 من أجل إضافة الرقم إلى المكان النونى في العدد .

التدريب 22 :
برنامج للتحقق مما إذا كان الرقم أولى Prime أم لا .
مثال للتحقق مما إذا كان عدد صحيح (تم إدخاله من قبل المستخدم) هو رقم أولي أم لا يستخدم حلقة for وعبارة if...else .
العدد الصحيح الموجب الذى يقبل القسمة فقط على 1 وعلى نفسه يعرف بالعدد الأولي prime number .
على سبيل المثال: 13 هو عدد أولي لأنه قابل للقسمة فقط على 1 وعلى نفسه 13 ولكن 15 ليس عدد أولي لأنه قابل للقسمة على 1 و 3 و 5 و 15.


الكود:
// Check Prime Number
#include <iostream>
using namespace std;

int main()
{
  int n, i;
  bool isPrime = true;

  cout << "Enter a positive integer: ";
  cin >> n;

  for(i = 2; i <= n / 2; ++i)
  {
      if(n % i == 0)
      {
          isPrime = false;
          break;
      }
  }
  if (isPrime)
      cout << "This is a prime number" <<endl;
  else
      cout << "This is not a prime number" <<endl;

  return 0;
}


الكود:
Output
Enter a positive integer: 29
This is a prime number.
 

1- يأخذ هذا البرنامج عددًا صحيحًا موجبًا من المستخدم ويخزنه في متغير n.

الكود:
cout << "Enter a positive integer: ";
  cin >> n;

2- بعد ذلك ، يتم تنفيذ حلقة for التي تتحقق مما إذا كان العدد الذي أدخله المستخدم n قابلاً للقسمة تمامًا على i أم لا.

الكود:
for(i = 2; i <= n / 2; ++i)
  {
      if(n % i == 0)
      {
          isPrime = false;
          break;
      }
  }

• تبدأ الحلقة for بقيمة أولية i تساوي 2 وتزيد قيمة i في كل تكرار.
• إذا كان العدد الذي أدخله المستخدم n قابلاً للقسمة تمامًا على i ، if(n % i == 0) ، فسيتم ضبط isPrime على "false" ولن يكون العدد عددًا أوليًا.
3- ولكن ، إذا لم يكن الرقم قابلاً للقسمة تمامًا على i حتى يكون شرط الاختبار i <= n / 2 صحيحًا true وهذا يعنى أنه سيكون فقط قابلاً للقسمة على 1 وعلى هذا الرقم نفسه. لذلك ، العدد المحدد هو عدد أولي.


برنامج آخر للتحقق مما إذا كان العدد هو عدد أولى Prime
الوصف
يتحقق البرنامج إذا كان العدد أوليًا. يحتوي العدد الأولي على عاملين فقط الواحد 1 والعدد نفسه.
الحل
1. يتم إدخال العدد المراد التحقق منه.
2. إذا كان قابلاً للقسمة على أي عدد طبيعي بدأ من 2 ، فعندئذ فهو ليس عددًا أوليًا.
3.وإلا فهو عدد أولي.
4. يتم طباعة النتيجة .
5. الخروج.


الكود:
#include<iostream>
using namespace std;

int main ()

    int num, i, count = 0;

    cout << "Enter the number to be checked : ";
    cin >> num;
 
 if (num == 0)
    {
        cout << "\n" << num << " is not prime";
        exit(1);
    }
    else 
    {
            for(i=2; i < num; i++)
                if (num % i == 0)
                    count++;
    }

    if (count > 1)
        cout << "\n" << num << " is not prime.";
    else
        cout << "\n" << num << " is prime.";
    return 0;
}


شرح البرنامج
1- يُطلب من المستخدم إدخال العدد المراد التحقق منه وتخزينه في المتغير 'num'.

الكود:

2- تتم تهيئة المتغير ‘count’بصفر 0.

الكود:
count = 0;

3- إذا كان num هو 0 ، فهو ليس عددا أوليًا.

الكود:
if (num == 0)
    {
        cout << "\n" << num << " is not prime";
        exit(1);
    }

4- تتم طباعة النتيجة ويتم إنهاء البرنامج exit(1); .
5- وإن لم يكن num بصفر else ، تستخدم حلقة for تبدأ من 2 ، يتم التحقق من num إذا كان قابلاً للقسمة على أي عدد طبيعي.


الكود:
    else 
    {
            for(i=2; i < num; i++)
                if (num % i == 0)
                    count++;
    }

6- إذا كان العدد num قابلاً للقسمة على أى عدد طبيعى i(2,3,4,…) ، فسيتم زيادة count .
7- يتم إنهاء الحلقة عندما يكون الشرط غير صحيح not true .
8- إذا كان count أكبر من 1 ، فهو ليس عدد أولي ، وإلا فإنه عدد أولي.
9- ثم تتم طباعة النتيجة.

الكود:
    if (count > 1)
        cout << "\n" << num << " is not prime.";
    else
        cout << "\n" << num << " is prime.";


الكود:
Runtime Test Cases
Case 1 :
Enter the number to be checked : 5
5 is prime.
 
Case 2 :
Enter the number to be checked : 0                                                                                       
0 is not prime.
 
Case 3 :
Enter the number to be checked : 28
28 is not prime.


التدريب رقم 23 :
برنامج لعرض الأعداد الأولية بين فترتين (رقمين) .
مثال لطباعة جميع الأعداد الأولية بين رقمين (أدخلهما المستخدم) . يتم حل هذه المشكلة باستخدام حلقة for المتداخلة وعبارة if...else .



الكود:
//1: Display Prime Numbers Between two Intervals
#include <iostream>
using namespace std;

int main()
{
    int low, high, i, flag;

    cout << "Enter two numbers(intervals): ";
    cin >> low >> high;

    cout << "Prime numbers between " << low << " and " << high << " are: ";

    while (low < high)
    {
        flag = 0;

        for(i = 2; i <= low/2; ++i)
        {
            if(low % i == 0)
            {
                flag = 1;
                break;
            }
        }

        if (flag == 0)
            cout << low << " ";

        ++low;
    }
    cout<<endl;

    return 0;
}



الكود:

في هذا البرنامج ، يتم تكرار حلقة while (عالية - منخفضة - 1) مرات.
في كل تكرار ، يتم تحديد ما إذا كان الرقم المنخفض هو عدد أولي أم لا ويتم زيادة قيمة القيمة المنخفضة بمقدار 1 حتى يكون المستوى الأدنى مساويًا للقيمة المرتفعة.
تفضل بزيارة هذه الصفحة لمعرفة المزيد حول كيفية التحقق مما إذا كان الرقم أوليًا أم لا.
إذا قام المستخدم بإدخال رقم أكبر أولاً ، فإن هذا البرنامج لا يعمل بالشكل المطلوب. يمكنك حل هذه المشكلة عن طريق تبديل الأرقام إذا أدخل المستخدم أكبر عدد أولاً.


الكود:
//2: Display Prime Numbers When Larger Number is Entered first
#include <iostream>
using namespace std;

int main()
{
    int low, high, flag, temp;
   
    cout << "Enter two numbers(intevals): ";
    cin >> low >> high;

    //swapping numbers if low is greater than high
    if (low > high) {
        temp = low;
        low = high;
        high = temp;
    }
    cout << "Prime numbers between " << low << " and " << high << " are: ";

    while (low < high)
    {
        flag = 0;

        for(int i = 2; i <= low/2; ++i)
        {
            if(low % i == 0)
            {
                flag = 1;
                break;
            }
        }
        if (flag == 0)
            cout << low << " ";

        ++low;
    }
    return 0;
}


التدريب رقم 24 :
برنامج للتحقق من عدد ارمسترونغ Armstrong Number
مثال للتحقق مما إذا كان عدد صحيح (تم إدخاله من قبل المستخدم) هو رقم Armstrong من عدمه باستخدام حلقة while وعبارة if...else .
يُطلق على الأعداد الصحيحة الموجبة رقم Armstrong إذا كان مجموع مكعبات الأرقام الفردية individual digit يساوي هذا العدد نفسه. فمثلا:
153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 // 153 is an Armstrong number.
12 is not equal to 1 * 1 * 1 + 2 * 2 * 2 // 12 is not an Armstrong number.


الكود:
// Check Armstrong Number
#include <iostream>
using namespace std;

int main()
{
  int origNum, num, rem, sum = 0;
  cout << "Enter a positive  integer: ";
  cin >> origNum;

  num = origNum;

  while(num != 0)
  {
      rem = num % 10;
      sum += rem * rem * rem;
      num /= 10;
  }

  if(sum == origNum)
    cout << origNum << " is an Armstrong number." <<endl ;
  else
    cout << origNum << " is not an Armstrong number." <<endl ;

  return 0;
}



الكود:
 Output
Enter a positive integer: 371
371 is an Armstrong number.


1- في البرنامج أعلاه ، يطلب من المستخدم إدخال عددًا صحيحًا موجبًا والذى يتم تخزينه فى المتغير origNum .
2- بعد ذلك ، يتم نسخ العدد إلى متغير آخر num . يتم ذلك لأننا بحاجة إلى التحقق من origNum في النهاية.
3- داخل حلقة while ، يتم فصل الرقم الاخير last digit عن num بالعملية digit = num % 10 وهى rem = num % 10; . هذا الرقم يتم تكعيبه وإضافته (جمعه) إلى المتغير sum .

4- الآن ، يتم تجاهل الرقم الأخير last digit باستخدام العبارة num /= 10; .
5- في الدورة التالية من حلقة while ، يتم فصل الرقم الأخير ، وتكعيبه إضافته إلى sum .
6- يستمر هذا حتى لا يتم ترك أي أرقام في num .
7- الآن ، تتم مقارنة مجموع sum بالعدد الأصلي origNum .
8- إذا كانت الأعداد متساوية ، فإن العدد الذي تم إدخاله هو عدد Armstrong. إذا لم يكن الأمر كذلك ، فالعدد ليس عدد Armstrong.


التدريب رقم 25 :
برنامج لعرض عدد ارمسترونغ بين فترتين Intervals
مثال للإيجاد جميع أرقام Armstrong بين عددين صحيحين (أدخلهما المستخدم) باستخدام الحلقات وعبارة if...else .
يطلب هذا البرنامج من المستخدم إدخال رقمين صحيحين ويعرض جميع أرقام Armstrong بين الفترة المعطاة (المحددة).
إذا كنت لا تعرف كيفية التحقق مما إذا كان الرقم هو Armstrong أم لا في البرمجة عندئذ ، فقد يبدو هذا البرنامج معقدًا قليلًا.



الكود:
// Display Armstrong Number Between Intervals
#include <iostream>
using namespace std;

int main()
{
  int num1, num2, i, num, digit, sum;

  cout << "Enter first number: ";
  cin >> num1;

  cout << "Enter second number: ";
  cin >> num2;

  cout << "Armstrong numbers between " << num1 << " and " << num2 << " are: " << endl;
  for(i = num1; i <= num2; i++)
  {
        sum = 0;
        num = i;

        for(; num > 0; num /= 10)
        {
            digit = num % 10;
            sum = sum + digit * digit * digit;
        }

        if(sum == i)
        {
            cout << i << endl;
        }
  }

  return 0;
}


الكود:
Output
Enter first number: 100
Enter second number: 400
Armstrong numbers between 100 and 400 are:
153
370
371

في هذا البرنامج ، من المفترض أن يقوم المستخدم دائمًا بإدخال العدد الأصغر أولاً.
لن يؤدي هذا البرنامج المهمة المقصودة إذا قام المستخدم بإدخال العدد رقم الأكبر أولاً.
يمكنك إضافة الكود لمبادلة عددين تم إدخالهما بواسطة المستخدم إذا قام المستخدم بإدخال العدد الأكبر أولاً لجعل هذا البرنامج يعمل بشكل صحيح.
في هذا البرنامج ، يتم أخذ كل عدد بين الفترة وتخزينه في المتغير num . ثم ، يتم استرداد كل رقم digit من العدد في المتغير digit وتكعيبه (رفعه للأس 3 ) (^3) .
تتم جمع النتيجة المكعبة إلى النتيجة المكعبة لآخر رقم sum .
أخيرًا ، عند تنفيذ كل رقم ، تتم مقارنة sum مع العدد الأصلي i. إذا كانوا متساوون ، فإن العدد يكون عدد ارمسترونغ.

Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تدريبات متدرجة لمراجعة البرمجة بلغة ++C Empty رد: تدريبات متدرجة لمراجعة البرمجة بلغة ++C

مُساهمة من طرف Admin في السبت يونيو 29, 2019 5:40 pm

التدريب رقم 26 :
برنامج لعرض عوامل Factors العدد
مثال لإيجاد جميع العوامل لعدد صحيح (أدخل من قبل المستخدم) باستخدام حلقة for ( عدد مرات التكرار معروف مسبقا) وعبارة if .
يأخذ هذا البرنامج عددًا صحيحًا موجبًا من المستخدم ويعرض جميع عوامل هذا العدد .


الكود:
// Display all Factors of a Number
#include <iostream>
using namespace std;

int main()
{
    int n, i;

    cout << "Enter a positive integer: ";
    cin >> n;

    cout << "Factors of " << n << " are: " << endl; 
    for(i = 1; i <= n; ++i)
    {
        if(n % i == 0)
            cout << i << endl;
    }

    return 0;
}


الكود:
 Output
Enter a positive integer: 60
Factors of 60 are:
1
2
3
4
5
6
10
12
15
20
30
60


في هذا البرنامج ، يتم تخزين عدد صحيح يدخله المستخدم في المتغير n .
بعد ذلك ، يتم تنفيذ حلقة for مع تهيئة أولية i = 1 والتحقق مما إذا كانت n قابلة للقسمة تمامًا على i أم لا. إذا كانت n قابلة للقسمة تمامًا على i ، فأنها تكون عامل من عوامل n.
في كل تكرار ، يتم تحديث قيمة i (زيادة بقيمة 1).
تستمر هذه العملية حتى يصبح شرط الاختبار i <= n خاطئًا ، بمعنى أن هذا البرنامج يتحقق مما إذا كان العدد الذي أدخله المستخدم n قابلًا للقسمة تمامًا على جميع الأرقام من 1 إلى n ويتم عرض كل عوامل هذا العدد .



التدريب رقم 27 :
برنامج لعمل آلة حاسبة بسيطة للجمع أو الطرح أو الضرب أو القسمة باستخدام عبارات switch...case و break .
يأخذ هذا البرنامج عامل حسابي (+ ، - ، * ، /) واثنين من المعاملات operands من المستخدم ويقوم بتنفيذ العملية على هذه المعاملات بناءً على العامل الذي أدخله المستخدم.



الكود:
// Simple Calculator using switch statement
# include <iostream>
using namespace std;

int main()
{
    char op;
    float num1, num2;

    cout << "Enter operator either + or - or * or /: ";
    cin >> op;

    cout << "Enter two operands: ";
    cin >> num1 >> num2;

    switch(op)
    {
        case '+':
            cout << num1+num2;
            break;

        case '-':
            cout << num1-num2;
            break;

        case '*':
            cout << num1*num2;
            break;

        case '/':
            cout << num1/num2;
            break;

        default:
            // If the operator is other than +, -, * or /, error message is shown
            cout << "Error! operator is not correct";
            break;
    }

    return 0;
}



الكود:
Output
Enter operator either + or - or * or divide : -
Enter two operands:
3.4
8.4
3.4 - 8.4 = -5.0


هذا البرنامج يأخذ مشغل واثنين من المعاملات من المستخدم.
يتم تخزين العامل في المتغير op ويتم تخزين اثنين من المعاملات في Num1 و Num2 على التوالي.
بعد ذلك ، يتم استخدام عبارة switch…case للتحقق من العامل الذي أدخله المستخدم.
إذا قام المستخدم بإدخال + ، فسيتم تنفيذ عبارات الحالة : '+' ويتم إنهاء البرنامج.
إذا أدخل المستخدم - إذن ، يتم تنفيذ عبارات الحالة: '-' ويتم إنهاء البرنامج.
يعمل هذا البرنامج بشكل مشابه لـعوامل * و /.
ولكن ، إذا كان العامل لا يتطابق مع أي من الأحرف الأربعة [+ ، - ، * و /] ، فسيتم تنفيذ عبارة الافتراضي default التى تعرض رسالة خطأ.


برنامج آخر لعمل آلة حاسبة بسيطة للجمع أو الطرح أو الضرب أو القسمة أو التربيع باستخدام عبارات switch...case و break .



الكود:
 /* C++ program to implement simple functions of a calculator*/

#include<iostream>
using namespace std;

int main()
{
  int choice;
  long num1, num2, x;

  //displaying different options
  cout << "Please choose your option:"
          "\n1 = Addition"
          "\n2 = Subtraction"
          "\n3 = Multiplication"
          "\n4 = Division"
          "\n5 = Squares"
          "\n6 = exit"
          "\n\nChoice: ";
  cin >> choice;

  //while loop check whether the choice is in the given range
  while(choice < 1 || choice > 6)
  {
      cout << "\nPlease choose the above mentioned option."
              "\nChoice: ";
      cin >> choice;
  }

  switch (choice)
  {
      //Addition
      case 1:
        cout << "Enter two numbers: \n";
        cin >> num1 >> num2;
        x = num1 + num2;
        cout << "Sum = " << x;
        break;

      //Subtraction
      case 2:
        cout << "Enter two numbers: \n";
        cin >> num1 >> num2;
        x = num1 - num2;
        cout << "Subtraction = " << x;
        break;

      //Multiplication
      case 3:
        cout << "Enter two numbers: \n";
        cin >> num1 >> num2;
        x = num1 * num2;
        cout << "Product = " << x;
        break;

      //Division
      case 4:
        cout << "Enter Dividend: ";
        cin >> num1;
        cout << "Enter Divisor: ";
        cin >> num2;

        //while loop checks for divisor whether it is zero or not
        while(num2 == 0)
        {
            cout << "\nDivisor cannot be zero."
                    "\nEnter divisor once again: ";
            cin >> num2;
        }
        x = num1 / num2;
        cout << "\nQuotient = " << x;
        break;

      //Square
      case 5:
        cout << "Enter any number: \n";
        cin >> num1;
        x = num1 * num1;
        cout << "Square = " << x;
        break;

      case 6:
        return 0;

      default: cout << "\nError";
  }
cout<<endl;

return 0;
}

Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تدريبات متدرجة لمراجعة البرمجة بلغة ++C Empty رد: تدريبات متدرجة لمراجعة البرمجة بلغة ++C

مُساهمة من طرف Admin في السبت يونيو 29, 2019 5:48 pm

التدريب رقم 28 :
برامج لإنشاء هرم Pyramid ونمط Pattern

أمثلة لطباعة نصف هرم ، وهرم ، وهرم مقلوب ، ومثلث باسكال Pascal's Triangle ومثلث فلويد Floyd's triangle باستخدام عبارات التحكم .


الكود:
//1: Program to print half pyramid using *
#include <iostream>
using namespace std;

int main()
{
    int rows;

    cout << "Enter number of rows: ";
    cin >> rows;

   
    for(int i = 1; i <= rows; ++i) // outer loop is responsible for row;
    {
   //print * equal to row number
        for(int j = 1; j <= i; ++j) //inner loop is responsible for column
        {
            cout << "* ";
        }
        cout << "\n"; // give line breaks after ending every rows
    }
    return 0;
}


هذا البرنامج يأخذ عدد الصفوف rows من المستخدم ويستخدم حلقات for المتداخلة لطباعة نصف الهرم .
• لطباعة أنماط هرمية نجمية ، نستخدم حلقتى for متداخلين .
• حلقة for الخارجية مسؤولة عن عدد الصفوف في مثلث النجمة (*) الهرمية أو النماذج (النقوش) ، في حين أن حلقة for الداخلية سوف يطبع العدد المطلوب من النجوم * في كل صف أى الأعمدة ، عدد النجوم يساوى رقم الصف ، الصف الأول نجمة واحدة ، الصف الثانى نجمتين ، وهكذا إلى الصف رقم rows يحتوى على rows نجمة .


الكود:
 //2: Program to print half pyramid a using numbers
#include <iostream>
using namespace std;

int main()
{
    int rows;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = 1; i <= rows; ++i) // outer loop is responsible for row
    {
        for(int j = 1; j <= i; ++j) //inner loop is responsible for columns
        {
            cout << j << " ";
        }
        cout << "\n"; // give line breaks after ending every row
    }
    return 0;
}



الكود:
 //3: Program to print half pyramid using alphabets
#include <iostream>
using namespace std;

int main()
{
    char input, alphabet = 'A';

    cout << "Enter the uppercase character you want to print in the last row: ";
    cin >> input;

    for(int i = 1; i <= (input-'A'+1); ++i)
    {
        for(int j = 1; j <= i; ++j)
        {
            cout << alphabet << " ";
        }
        ++alphabet;

        cout << endl;
    }
    return 0;
}



الكود:
//4: Inverted half pyramid using *
#include <iostream>
using namespace std;

int main()
{
    int rows;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = rows; i >= 1; --i)
    {
        for(int j = 1; j <= i; ++j)
        {
            cout << "* ";
        }
        cout << endl;
    }
   
    return 0;

}



الكود:
//5: Inverted half pyramid using numbers
#include <iostream>
using namespace std;

int main()
{
    int rows;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = rows; i >= 1; --i)
    {
        for(int j = 1; j <= i; ++j)
        {
            cout << j << " ";
        }
        cout << endl;
    }

    return 0;
}


الكود:
//6: Program to print full pyramid using *
int main()
{
  int rows, i, j, space;

  cout << "Enter number of rows: ";
  cin >> rows;

  for(i = 1; i <= rows; i++) //i=1,2,3,…..rows
  {
      //for loop for displaying space
      for(space = i; space < rows; space++)
      {
        cout << " "; //spaces=rows-1,rows-2,rows-3,….,0
      }

      //for loop to display stars
      for(j = 1; j <= (2 * i - 1); j++) //
      {
        cout << "*";//stars=1,3,5,…,2*row-1
      }

      cout << "\n";
  }

  return 0;
}



الكود:
//7 : C++ program to display inverted full star pyramid

#include<iostream>
using namespace std;

int main()
{
  int rows, i, j, space;

  cout << "Enter number of rows: ";
  cin >> rows;

  for(i = rows; i >= 1; i--)
  {
      //for loop to put space
      for(space = i; space < rows; space++)
        cout << " ";

      //for loop for displaying star
      for(j = 1; j <= (2 * i - 1); j++)
        cout << "* ";

      cout << "\n";
  }

  return 0;
}




الكود:
//8 : C++ program to display hollow star pyramid

#include<iostream>
using namespace std;

int main()
{
  int rows, i, j, space;

  cout << "Enter number of rows: ";
  cin >> rows;

  for(i = 1; i <= rows; i++)
  {
      //for loop to put space in pyramid
      for (space = i; space < rows; space++)
        cout << " ";

      //for loop to print star
      for(j = 1; j <= (2 * rows - 1); j++)
      {
        if(i == rows || j == 1 || j == 2*i - 1)
            cout << "*";
        else
            cout << " ";
      }
      cout << "\n";
  }
  return 0;
}



الكود:
 //9 : C++ program to display inverted hollow star pyramid

#include<iostream>
using namespace std;

int main()
{
  int rows, i, j, space;

  cout << "Enter number of rows: ";
  cin >> rows;

  for(i = rows; i >= 1; i--)
  {
      //for loop to put space in pyramid
      for (space = i; space < rows; space++)
        cout << " ";

      //for loop to print star in pyramid
      for(j = 1; j <= 2 * i - 1; j++)
      {
        if(i == rows || j == 1 || j == 2*i - 1)
            cout << "*";
        else
            cout << " ";
      }
      cout << "\n";
  }
  return 0;
}



الكود:
//10: Program to print pyramid using numbers
#include <iostream>
using namespace std;

int main()
{
    int rows, count = 0, count1 = 0, k = 0;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = 1; i <= rows; ++i)
    {
        for(int space = 1; space <= rows-i; ++space)
        {
            cout << "  ";
            ++count;
        }

        while(k != 2*i-1)
        {
            if (count <= rows-1)
            {
                cout << i+k << " ";
                ++count;
            }
            else
            {
                ++count1;
                cout << i+k-2*count1 << " ";
            }
            ++k;
        }
        count1 = count = k = 0;

        cout << endl;
    }
    return 0;
}




الكود:
//11: Print Pascal's triangle
#include <iostream>
using namespace std;

int main()
{
    int rows, coef = 1;

    cout << "Enter number of rows: ";
    cin >> rows;
//for loop continues till the number of rows entered by the user
    for(int i = 0; i < rows; i++)
    {
//for loop to print required number of space
        for(int space = 1; space <= rows-i; space++)
            cout <<"  ";
//for loop to print number in triangle
        for(int j = 0; j <= i; j++)
        {
//first and last value of every row is 1
            if (j == 0 || i == 0)
                coef = 1;
            else
                coef = coef*(i-j+1)/j;

            cout << coef << "  ";
        }
        cout << endl;
    }

    return 0;
}


مثلث باسكال هو مجموعة مثلثية من معاملات ذات الحدين سميت على اسم عالم الرياضيات الفرنسي بليز باسكال.
هذا البرنامج يطبع مثلث باسكال . يأخذ البرنامج عدد الصفوف كمدخلات ويستخدم حلقات متداخلة لطباعة مثلث باسكال.
• الحلقة الداخلية الأولى :

الكود:
for(int space = 1; space <= rows-i; space++)
            cout <<"  ";

تخلق فراغ space المسافة البادئة >
• والحلقة الداخلية الثانية :

الكود:
    for(int j = 0; j <= i; j++)
        {
            if (j == 0 || i == 0)
                coef = 1;
            else
                coef = coef*(i-j+1)/j;

            cout << coef << "  ";
        }

تحسب قيمة معامل ذي الحدين ، وتخلق فراغ المسافة البادئة وتطبع معامل ذي الحدين لهذا العمود المعين.




الكود:
//12: Print Floyd's Triangle.
#include <iostream>
using namespace std;

int main()
{
    int rows, number = 1;
//number of rows to print
    cout << "Enter number of rows: ";
    cin >> rows;

//for loop responsible for number of rows
    for(int i = 1; i <= rows; i++)
    {
//for loop responsible for number of columns
        for(int j = 1; j <= i; ++j)
        {
            cout << number << " "; //print number starting from 1
            ++number;
        }

        cout << endl;
    }

    return 0;
}

Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى