السلام عليكم
أخي الكريم -Cheetah-
لقد حللت بعض المشاكل الموجودة في البرنامج و كانت كالتالي :
1 – يجب عليك أن تضع أوامر إخراج المعدل بعد اختبار قيمة المتغير test أي بعد switch .. بالإضافة إلى ضرورة أيضاً طلب النتيجة التالية لضرب عددين قبل انتهاء while .
2 – قمت بإضافة متغير عام لأجل عدد الأسئلة و سنزيد هذا العداد في كل مرة نطرح سؤال و ذلك أيضاً بعد switch .. و القيمة الابتدائية لهذا العداد هي الواحد لأننا طلبنا أول سؤال قبل الحلقة while .
3 – من أجل حساب المعدل قمت بتغيير المعادلة بحيث أصبحت عدد الأجوبة الصحيحة ( countGlob ) مع تقسيمها على عدد الأسئلة و هو count – 1 لأننا سنزيد العداد ثم سنختبره و لأننا نريد 10 أسئلة فستكون قيمة count لذلك تساوي 11 .
4 – قمت بترتيب بسيط لطباعة النصوص و وضع سطر من أجل عملية إدخال العشرة أرقام التالية مع إضافة رقم السؤال عند طرحه .
5 – من أجل انهاء البرنامج .. لاحظ أن EOF هي ثابت له القيمة ( 1- ) و بالتالي فور ادخال هذه القيمة سينتهي البرنامج .. و إذا كنت تريد كتابة المعدل بعد إدخال ( 1- ) و قبل انتهاء البرنامج و الخروج منه فأضف أوامر حساب المعدل بعد نهاية الحلقة while و لكن مع الانتباه إلى عدم التقسيم على count – 1 بل على 10 .
هذا هو البرنامج :
كود PHP:
# include <iostream>
# include <cstdlib>
# include <ctime>
using namespace std;
void main()
{
int n1,n2;
int res;
int in;
int count = 1;
int countGlob = 0;
int countWrong = 0;
int test;
int rcase;
bool clear = false;
srand(unsigned( time(0) ));
n1 = (rand()%9)+1;
n2 = (rand()%9)+1;
res = n1*n2;
cout << count << ". How much is " << n1 << " times " << n2 << endl;
cin >> in;
while ( in != EOF )
{
rcase = (rand()%3)+1;
if (in==res)
{
test=1;
}
else
{
test=2;
}
switch(test)
{
case 1:
if (rcase==1)
{
cout << "Great job, keep it up.\n" << endl;
}
else
{
if (rcase==2)
{
cout << "Correct!!\n" << endl;
}
else
{
cout << "Right, keep up the good work.\n" << endl;
}
}
clear = false;
countGlob++;
break;
case 2:
if (rcase==1)
{
cout << "Wrong, try again.\n" << endl;
}
else
if (rcase==2)
{
cout << "Too bad, give it another shot.\n" << endl;
}
else
{
cout << "No, don't give up!\n" << endl;
}
if (!clear)
{
countWrong++;
clear = true;
}
break;
}
count++;
if (count==11)
{
cout << "Your percentage is "
<< (static_cast<double>(countGlob) / (count-1) ) * 100 << "%."<< endl
<< "==================================\n";
countWrong = 0;
countGlob = 0;
count = 1;
}
n1 = (rand()%9)+1;
n2 = (rand()%9)+1;
res = n1*n2;
cout << count << ". How much is " << n1 << " times " << n2 << endl;
cin >> in;
}
}
هذا حل سريع لمشكلة البرنامج .. بالتوفيق