السلام عليكم
يمكننا استخدام التعبير cin.fail للتحقق من صحة الإدخال:
#include<iostream>
using namespace std;
int main()
{
int n;
cout<<"n=";
cin>>n;
if(cin.fail())
cout<<"erreur!\a"<<endl;
else
cout<<n<<endl;
system("pause");
return 0;
}حيث يكون هذا التعبير خاطئا:
cin.fail()=false
إذا تمت عملية الإدخال بشكل صحيح.. و يكون صحيحا:
cin.fail()=true
إذا لم تتم عملية الإدخال بالشكل المطلوب.
و لكن الغريب في الأمر ما يحدث لي عند استخدامه في الدوارة while
#include<iostream>
using namespace std;
int main()
{
int n;
do
{
cout<<"Enter an integer number:";
cin>>n;
system("cls");
}while(cin.fail());
return 0;
}هناك خطأ منطقي في البرنامج ...! و لكنني لا أعلم سببه :blush:
أرجوا منكم التوضيح.
قال لي أحد الأعضاء:
اقتباسلخطا انك استخدم الشرط while شرط مثبت فلابد من نفيه حتى يتم تحقيق الشرطلان الشرط لم يتحقق هكذا
انت تقول للبرنامج افعل هذا الكود اكثر من مره عندما يكون الادخال خاطئ
لذا عليك بنفى الشرط داخل while
هذا ما فهمته من سوالك وان كان خطا ف الفهم ارجوا التوضيح
#include<iostream> using namespace std; int main() { int n; do{ cout<<"Enter an integer number:"; cin>>n; system("cls"); }while(!cin.fail()); return 0; }
لكن الكود ما زال لا يؤدي المطلوب ....!