انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: masoudk در 29 دی 1392، 02:22 ب‌ظ

عنوان: Integer validate in c plus plu
ارسال شده توسط: masoudk در 29 دی 1392، 02:22 ب‌ظ
سلام، من تو یک مشکل ساده و ابتدایی گیر کردم  ;D
این کد باید برای بررسی اینکه ورودی عدد هست درست کار کنه:
int getInt ()
{

int i;
while (!(cin >> i))
{
cout << "Please enter an integer: ";
cin.clear();
}

return i;

}

ولی اگه کاراکتر وارد کنی تو یه حلقه بی نهایت میافته و همش پشت سر هم مینویسه "Please enter an integer: "
یعنی دیگه توی cin منتظر وارد شدن ورودی نمیمونه. کسی میدونه چرا؟  ;D
   
عنوان: پاسخ : Integer validate in c plus plu
ارسال شده توسط: امید توانا در 29 دی 1392، 02:43 ب‌ظ
سلام، من تو یک مشکل ساده و ابتدایی گیر کردم  ;D
این کد باید برای بررسی اینکه ورودی عدد هست درست کار کنه:
int getInt ()
{

int i;
while (!(cin >> i))
{
cout << "Please enter an integer: ";
cin.clear();
}

return i;

}

ولی اگه کاراکتر وارد کنی تو یه حلقه بی نهایت میافته و همش پشت سر هم مینویسه "Please enter an integer: "
یعنی دیگه توی cin منتظر وارد شدن ورودی نمیمونه. کسی میدونه چرا؟  ;D
cin.clear فقط خطای cin رو پاک می‌کنه و به خط بعد نمی‌ره. بنابراین همون مقدار حرفی رو پشت سر هم دریافت می‌کنه. برای رد مشکل    
cin.ignore(10000, '\n');
رو بعد از cin.clear بزار.
عنوان: پاسخ : Integer validate in c plus plu
ارسال شده توسط: masoudk در 29 دی 1392، 04:10 ب‌ظ
مرسی، درست شد :)
اگه بخوایم کامل بافر خالی بشه، مثل شرایط الان من، میتونیم cin.ignore() خالی رو هم بنویسیم.
عنوان: پاسخ : Integer validate in c plus plu
ارسال شده توسط: امید توانا در 29 دی 1392، 04:24 ب‌ظ
مرسی، درست شد :)
اگه بخوایم کامل بافر خالی بشه، مثل شرایط الان من، میتونیم cin.ignore() خالی رو هم بنویسیم.
نه بافر خالی نمی‌شه. مثلن ورودی رو
A B C 10بدید و ببینید چی می‌شه.
عنوان: پاسخ : Integer validate in c plus plu
ارسال شده توسط: masoudk در 29 دی 1392، 05:15 ب‌ظ
بله بازم حق با شماست  ;D
اگه مشخص نکنیم ignore تا وقتی که به space برسه discard میکنه، یعنی با مثال A B C 10 سه تا حلقه طول میکشه بافر خالی بشه.  ;D
مرسی، خیلی لطف کردید
عنوان: پاسخ : Integer validate in c plus plu
ارسال شده توسط: doomhammer65ir در 30 دی 1392، 05:14 ب‌ظ
http://www.cprogramming.com/fod/isdigit.html
عنوان: پاسخ : Integer validate in c plus plu
ارسال شده توسط: amin-asa در 01 بهمن 1392، 12:25 ق‌ظ
http://www.cprogramming.com/fod/isdigit.html

اینکه یک کاراکتر رو میگیره و چک میکنه 0-9 هست یا نه. چطور میشه با این روش این مسئله رو حل کرد؟

فکر کنم اگر متغیر رو string تعریف کنیم و بعد تک تک کاراکترها رو با این تابع چک کنیم مسئله حل میشه. درست میگم؟ :)
عنوان: پاسخ : Integer validate in c plus plu
ارسال شده توسط: doomhammer65ir در 01 بهمن 1392، 09:55 ق‌ظ
یا رشته یا آرایه ای از کاراکترها