اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

المشكلة التي تحدث في شيفرتك هو انه لا يتم تجاوز قيمة result وانما يتم طباعة مجموع result و الرقم الذي تتوفر فيه الشروط فقط.

جرب تعديل الكود ليصبح:

#include <iostream>
using namespace std;

int main()
{
    int result = 0;
    int num1, num2, num3, num4;

    cout << "Please Type 5 Number In A Row\n";
    cout << "Only Even Numbers Smaller Than 20 Will Be Counted\n";

    cin >> num1 >> num2 >> num3 >> num4;

    if (num1 < 20 && num1 % 2 == 0) {
       result += num1;
    }

    if (num2 < 20 && num2 % 2 == 0) {
       result += num2;
    }

    if (num3 < 20 && num3 % 2 == 0) {
       result += num3;
    }

    if (num4 < 20 && num4 % 2 == 0) {
       result += num4;
    }

    cout << "The sum of even numbers smaller than 20 is: " << result << endl;

    return 0;
}

تطلب الشيفرة من المستخدم إدخال 4 أرقام، ثم تقوم بفحص كل عدد إذا كان عددًا زوجيًا أقل من 20 وإذا كانت الشروط متوفرة فإنه يتم إضافة قيمة العدد إلى المتغير result. وفي الاخير طباعة هذا المجموع.

  • 1
نشر

بالإضافة إلى الطريقة التي ذكرها لك عدنان، هناك عدة طرق  لتجميع الأرقام الزوجية الأقل من 20 تلقائيًا وتشمل:

 

1- استخدام حلقة (loop) لتكرار الفحص والإضافة. يمكن استخدام حلقة لتكرار عملية الفحص والإضافة حتى الوصول إلى جميع الأرقام المدخلة.

من خلال الحلقة مع جملة if للتحقق مما إذا كان العدد زوجيًا وأقل من 20، وإذا كانت الشروط متوفرة يمكن إضافة العدد إلى المتغير result.

2- استخدام مصفوفة (array) لتخزين الأرقام وإجراء الفحص. يمكن تخزين الأرقام المدخلة في مصفوفة واستخدام حلقة لتحقيق الفحص والإضافة إلى المتغير result.

عن طريق الجملة if داخل الحلقة للتحقق مما إذا كان العدد زوجيًا وأقل من 20، وإذا كانت الشروط متوفرة يمكن إضافة العدد إلى المتغير result.

3- الإعتماد على الدالة (function) لتنفيذ الفحص والإضافة. يمكن إنشاء دالة تتلقى مجموعة من الأرقام كمدخلات وتقوم بتنفيذ الفحص والإضافة تلقائيًا. يمكن استخدام الجملة if داخل الدالة للتحقق مما إذا كان العدد زوجيًا وأقل من 20، وإذا كانت الشروط متوفرة يمكن إضافة العدد إلى المتغير result. يمكن استخدام الدالة في أي مكان في الشيفرة التي تريدها لتجميع الأرقام الزوجية.

مثال للطريقة الثانية:

#include <iostream>
using namespace std;

int main()
{
    int result = 0;
    int num;

    cout << "Please enter a number: ";

    while (cin >> num && num < 20) {
        if (num % 2 == 0) {
            result += num;
        }
        cout << "Please enter another number: ";
    }

    cout << "The sum of even numbers smaller than 20 is: " << result << endl;

    return 0;
}

والكود يطلب من المستخدم إدخال عدد واحد فقط في البداية، ثم استخدام حلقة while لطلب المزيد من الأرقام الزوجية الأقل من 20 مع الاستمرار في إضافة الأرقام إلى المتغير result.

ويتوقف البرنامج عندما يتم إدخال رقم غير زوجي أو رقم أكبر من 20. في النهاية، يتم طباعة مجموع الأرقام الزوجية الأقل من 20.

  • 1
نشر

بالإضافة إلى ما سبق و ذكره المدربوه هناك طريقة في ال c++ الحديثة تعتمد على توابع مثل accumulate و على استعمال ال containers مثل ال vector (و الذي يمكن تخزين عناصر بشكل ديناميكي ضمنه) كما أنها طريقة سهلة الفهم، و هي كما يلي:

#include <iostream>
#include <vector>
#include <numeric>

using namespace std;

int main() {
	
	vector<int> v;
	
	int n;
	cin >> n;
	
	for (int i = 0 ; i < n ; ++i)
	{
		int x;
		cin >> x;
		if (x < 20 && (x & 1) == 0)
		{
			v.push_back(x);
		}
	}
	
	int sum = accumulate(v.begin(), v.end(), 0);
	cout << sum << endl;
	
	return 0;
}

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

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

و في النهاية نقوم باستدعاء التابع accumulate و هو يأخذ بداية و نهاية ال container التي هنا هي vector و القيمة الأولية و هنا نريدها 0.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...