السلام عليكم
قمت بكتابة الكود التالي الذي يقوم بجمع عددين صحيحين و يتحقق من صحة الإدخال قبل أن يقوم بعملية الجمع, انظر الكود :
#include<iostream>
using namespace std;
int main()
{
int x,y;
cout<<"x=";
cin>>x;
while(cin.fail())
{
cin.clear();
cin.sync();
cout<<"Une erreur s'est produite ! \a"<<endl;
cout<<"Valeur impossible !, Veuillez entrer une valeur entier : "<<endl;
cout<<"x=";
cin>>x;
}
cin.sync();
cout<<"y=";
cin>>y;
while(cin.fail())
{
cin.clear();
cin.sync();
cout<<"Une erreur s'est produite ! \a"<<endl;
cout<<"Valeur impossible !, Veuillez entrer une valeur entier : "<<endl;
cout<<"y=";
cin>>y;
}
cout<<x<<" + "<<y<<" = "<<x+y<<endl;
system("pause");
return 0;
}المشكلة التي أعاني منها هي :
إذا طلبنا من المستخدم إدخال قيمة لـ x و أدخل المستخدم مجموعة من الحروف و الرموز بشرط أن تبدأ برقم مثل
5GHµ£§
فإن المترجم يعتبر أن قيمة x هي 5 !!!
سؤالي هو :
كيف يمكننا أن نتغلب على هذه المشكلة بحيث يتم رفض كل عبارة تحتوي على رمز أو حرف و تبدأ برقم.
تحياتي.