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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: Integer validate in c plus plu  (دفعات بازدید: 1788 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین masoudk

  • Sr. Member
  • *
  • ارسال: 334
  • جنسیت : پسر
  • I love my loneliness
Integer validate in c plus plu
« : 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
   
contact masoudk1990@yahoo.com

آفلاین امید توانا

  • Hero Member
  • *
  • ارسال: 981
  • جنسیت : پسر
پاسخ : Integer validate in c plus plu
« پاسخ #1 : 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 بزار.

آفلاین masoudk

  • Sr. Member
  • *
  • ارسال: 334
  • جنسیت : پسر
  • I love my loneliness
پاسخ : Integer validate in c plus plu
« پاسخ #2 : 29 دی 1392، 04:10 ب‌ظ »
مرسی، درست شد :)
اگه بخوایم کامل بافر خالی بشه، مثل شرایط الان من، میتونیم cin.ignore() خالی رو هم بنویسیم.
contact masoudk1990@yahoo.com

آفلاین امید توانا

  • Hero Member
  • *
  • ارسال: 981
  • جنسیت : پسر
پاسخ : Integer validate in c plus plu
« پاسخ #3 : 29 دی 1392، 04:24 ب‌ظ »
مرسی، درست شد :)
اگه بخوایم کامل بافر خالی بشه، مثل شرایط الان من، میتونیم cin.ignore() خالی رو هم بنویسیم.
نه بافر خالی نمی‌شه. مثلن ورودی رو
A B C 10بدید و ببینید چی می‌شه.

آفلاین masoudk

  • Sr. Member
  • *
  • ارسال: 334
  • جنسیت : پسر
  • I love my loneliness
پاسخ : Integer validate in c plus plu
« پاسخ #4 : 29 دی 1392، 05:15 ب‌ظ »
بله بازم حق با شماست  ;D
اگه مشخص نکنیم ignore تا وقتی که به space برسه discard میکنه، یعنی با مثال A B C 10 سه تا حلقه طول میکشه بافر خالی بشه.  ;D
مرسی، خیلی لطف کردید
contact masoudk1990@yahoo.com

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : Integer validate in c plus plu
« پاسخ #5 : 30 دی 1392، 05:14 ب‌ظ »
http://www.cprogramming.com/fod/isdigit.html

آفلاین amin-asa

  • Full Member
  • *
  • ارسال: 161
  • جنسیت : پسر
پاسخ : Integer validate in c plus plu
« پاسخ #6 : 01 بهمن 1392، 12:25 ق‌ظ »
http://www.cprogramming.com/fod/isdigit.html

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

فکر کنم اگر متغیر رو string تعریف کنیم و بعد تک تک کاراکترها رو با این تابع چک کنیم مسئله حل میشه. درست میگم؟ :)
* زندگی خالی نیست *
* مهربانی هست، سیب هست، ایمان هست *
* آری تا شقایق هست، زندگی باید کرد *

آفلاین doomhammer65ir

  • High Hero Member
  • *
  • ارسال: 1572
  • جنسیت : پسر
    • IRAN Backup
پاسخ : Integer validate in c plus plu
« پاسخ #7 : 01 بهمن 1392، 09:55 ق‌ظ »
یا رشته یا آرایه ای از کاراکترها