PDA

نسخه کامل مشاهده نسخه کامل : تعیین صحت نوع داده !!



Tom Clancy's
17-11-2012, 21:06
سلام دوستان
میخواستم بدونم بهترین راه برای چک کردن نوع داده تو c++ چی هست؟!!
مثلا برای متغییری که از نوع رشته تعریف کردیم، اگر کاربر مقداری که وارد میکنه از نوع رشته نباشه یه پیغام نمایش بده !!

szh_1367
17-11-2012, 22:46
سلام دوستان
میخواستم بدونم بهترین راه برای چک کردن نوع داده تو c++ چی هست؟!!
مثلا برای متغییری که از نوع رشته تعریف کردیم، اگر کاربر مقداری که وارد میکنه از نوع رشته نباشه یه پیغام نمایش بده !!
سلام

برای مشخص کردن نوع داده که میتوانید از دستور typeid استفاده کنید

نمیشه گفت بهترین راه همیشه از یک طریق بدست می اید بهترین راه رو شما باید با توجه نوع مسئله و تکنیک های مورد استفاده در برنامه خود بدست اورید

برای بدست اوردن اطلاعات بیشتر در مورد typeid به اینجـــا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])و اینجـــا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])مراجعه کنید

Tom Clancy's
20-11-2012, 16:50
سلام

برای مشخص کردن نوع داده که میتوانید از دستور typeid استفاده کنید

نمیشه گفت بهترین راه همیشه از یک طریق بدست می اید بهترین راه رو شما باید با توجه نوع مسئله و تکنیک های مورد استفاده در برنامه خود بدست اورید

برای بدست اوردن اطلاعات بیشتر در مورد typeid به اینجـــا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])و اینجـــا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])مراجعه کنید

دوست عزیز typeip نوع متغییری که تعریف شده رو مشخص میکنه !
من میخوام ماهیت چیزی که کاربر وارد میکنه رو بررسی کنم که اگر مثلا به جای عدد کاراکتر وارد کرده بود یه پیغام نمایش بده!

szh_1367
20-11-2012, 18:19
دوست عزیز typeip نوع متغییری که تعریف شده رو مشخص میکنه !
من میخوام ماهیت چیزی که کاربر وارد میکنه رو بررسی کنم که اگر مثلا به جای عدد کاراکتر وارد کرده بود یه پیغام نمایش بده!

بله درسته typeip نوع رو مشخص میکنه

ابتدا اینکه تمام داده هایی که وارد سیستم میشوند به صورت رشته هستند این شمااید که باید داده رو به نوع مورد نظر تبدیل کنید یا زبان برنامه نویسی این قابلیت رو داشته باشد که داده رو تشخیص دهد

کاری که شما میخواهید انجام دهید اعتبار سنجی نام دارد

برای اعتبار سنجی باید داده رو دریافت و کاراکتر به کاراکتر اون رو چک کرد این عملیات باید قبل از وارد شدن داده به قسمت عملیاتی یا محاسباتی باشد

به عنوان مثال اینجــــا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])رو مشاهده کنید که از تابع isdigit جهت تشخیص اینکه کاراکتر مورد نظر عدد است یا خیر

شما برای کار خود باید تابعی درست کنید که کار اعتبار سنجی رو انجام دهد

اگر قسمتی از توضیحات گنگ است بفرمائید توضیح خواهم داد

Tom Clancy's
20-11-2012, 19:55
بله درسته typeip نوع رو مشخص میکنه

ابتدا اینکه تمام داده هایی که وارد سیستم میشوند به صورت رشته هستند این شمااید که باید داده رو به نوع مورد نظر تبدیل کنید یا زبان برنامه نویسی این قابلیت رو داشته باشد که داده رو تشخیص دهد

کاری که شما میخواهید انجام دهید اعتبار سنجی نام دارد

برای اعتبار سنجی باید داده رو دریافت و کاراکتر به کاراکتر اون رو چک کرد این عملیات باید قبل از وارد شدن داده به قسمت عملیاتی یا محاسباتی باشد

به عنوان مثال اینجــــا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])رو مشاهده کنید که از تابع isdigit جهت تشخیص اینکه کاراکتر مورد نظر عدد است یا خیر

شما برای کار خود باید تابعی درست کنید که کار اعتبار سنجی رو انجام دهد

اگر قسمتی از توضیحات گنگ است بفرمائید توضیح خواهم داد

این کار رو انجام دادم قبلا منتها یه مشکلی که دارم اینه
مثلا تابع isdigit که برای تشخیص اعداد 0 تا 9 هست ، وقتی که یه متغییری از نوع int تعریف میکنم و از کاربر مقدار رو میگیرم با اینکه عدد وارد میکنم ولی باز هم تابع مقدار 0 رو بر میگردونه!!
حالا اگر همون متغییر رو از نوع char تعریف کنم و مقدار رو بگیرم تابع به درستی عمل میکنه!
میخواستم بدونم نمیشه کاری کرد که نوع متغییر عددی باشه اما این تابع مقدار درست رو برگردونه؟!

szh_1367
20-11-2012, 22:31
این کار رو انجام دادم قبلا منتها یه مشکلی که دارم اینه
مثلا تابع isdigit که برای تشخیص اعداد 0 تا 9 هست ، وقتی که یه متغییری از نوع int تعریف میکنم و از کاربر مقدار رو میگیرم با اینکه عدد وارد میکنم ولی باز هم تابع مقدار 0 رو بر میگردونه!!
حالا اگر همون متغییر رو از نوع char تعریف کنم و مقدار رو بگیرم تابع به درستی عمل میکنه!
میخواستم بدونم نمیشه کاری کرد که نوع متغییر عددی باشه اما این تابع مقدار درست رو برگردونه؟!
الان کامپایلر ندارم امتحان کنم اما همانطور که عرض کردم مقادیر دریافتی همه رشته هستند شما باید مقادیر رو قبل از ارسال به تابع تبدیل کنید

مثلا کاربر عدد 123 وارد میکند اما در واقع کامپیوتر ان را رشته 123 در نظر میگیرد

Tom Clancy's
20-11-2012, 23:09
الان کامپایلر ندارم امتحان کنم اما همانطور که عرض کردم مقادیر دریافتی همه رشته هستند شما باید مقادیر رو قبل از ارسال به تابع تبدیل کنید

مثلا کاربر عدد 123 وارد میکند اما در واقع کامپیوتر ان را رشته 123 در نظر میگیرد

شما منظورتون اینه که وقتی یه متغیر نوعش int هست من دوباره باید تبدیلش کنم بعد ارسال کنم به تابع؟!
اگر اینطوره به چی باید تبدیل بشه؟ کاراکتر؟!

szh_1367
21-11-2012, 16:06
شما منظورتون اینه که وقتی یه متغیر نوعش int هست من دوباره باید تبدیلش کنم بعد ارسال کنم به تابع؟!
اگر اینطوره به چی باید تبدیل بشه؟ کاراکتر؟!

بله به کاراکتر تبدیل کنید چون نوع ورودی تابع isdigit کاراکتر است

مگر اینکه شما خودتان تابعی تعریف کنید که کار اعتبارسنجی رو با ورودی int انجام دهد

این کار بیشتر به خودتون بستگی داره که بخواهید چطور با داده برخورد کنید