PDA

View Full Version : مبتدی: نحوه ی کنترل موارد وارد شده...



SpaceGirl76
یک شنبه 03 بهمن 1395, 21:29 عصر
سلام...
ما پروژه ای داریم که باید یک چند جمله ای رو در نقطه ای مشخص حساب کنیم...
با این مشکلی ندارم...
مشکل من اینجاشه که میخوام کنترل کنم آیا اون بزرگترین توانی کع کاربر به من میده، یا هر کدوم از ضرایب عدد هستن یا نه...
و اگر احیانا به طور مثال کاربر یه کاراکتر وارد کرد، برنامه بیاد پیام بده که این عدد نیست و دوباره اون رو بگیره...
با این قسمتش مشکل دارم...
کسی هست بتونه بهم کمکی کنه؟؟؟؟؟
ممنون میشم!!

negative60
یک شنبه 03 بهمن 1395, 22:24 عصر
برای تشخیص عدد بودن یا کاراکتر بودن ورودی میتونی‌ از تابع atoi استفاده کنی‌، برای کار با رشته‌ها باید توابع مربوط به اون رو بشناسی تو این بلاگ (http://itumz.blogfa.com/post/8/%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%D9%85%D9%81%DB%8C%D8%AF-%D8%AF%D8%B1-c-%D8%B3%D8%B1%DB%8C-%D8%AF%D9%88%D9%85) در مورد تعدادی از این توابع توضیح داده

int myInput = atoi("200");
if(myInput != 0)
{
//is numebric
printf("Input: %d\n", myInput);
}

SpaceGirl76
دوشنبه 04 بهمن 1395, 17:20 عصر
یه جا خوندم که نوشته بود این تابع رشته میگیره نه کارکتر، من فقظ یه کارکتر بش وارد میکنم، که پیشنهاد شده بود از تابع char_to_int استفاده بشه...
این رو بگذریم...
ادامه ی پروژه نوشته بود که از کاربر پرسیده بشه که آیا میخواد دوباره این روند رو انجام بده یا نه؟
من واسه این مرحله اومدم از goto استفاده کردم، ولی هر دفه جواب فرق داره با مرحله ی قبل؟؟؟؟؟؟؟؟؟؟؟؟

negative60
دوشنبه 04 بهمن 1395, 18:41 عصر
یه جا خوندم که نوشته بود این تابع رشته میگیره نه کارکتر، من فقظ یه کارکتر بش وارد میکنم، که پیشنهاد شده بود از تابع char_to_int استفاده بشه...
این رو بگذریم...


آرایه‌ای از کاراکتر‌ها رشته رو تشکیل میدن، پس فرقی‌ نداره ورودی یک بایت باشه یا یک مگ‌



ادامه ی پروژه نوشته بود که از کاربر پرسیده بشه که آیا میخواد دوباره این روند رو انجام بده یا نه؟
من واسه این مرحله اومدم از goto استفاده کردم، ولی هر دفه جواب فرق داره با مرحله ی قبل؟؟؟؟؟؟؟؟؟؟؟؟
تمام فرایند رو داخل یه حلقه بی‌ پایان قرار بدید و اگر جواب ادامه روند "خیر" بود حلقه رو ببندید

SpaceGirl76
دوشنبه 04 بهمن 1395, 19:10 عصر
تمام فرایند رو داخل یه حلقه بی‌ پایان قرار بدید و اگر جواب ادامه روند "خیر" بود حلقه رو ببندید
اینکارم کردم...بازم جواب فرق داره...:اشتباه:

Mr_Linux
پنج شنبه 21 بهمن 1395, 23:26 عصر
سوالی که طرح کردید یا کمی مبهم بود یا من بد متوجه شدم شاید . مشکل شما اینه که میخواید اگه طرف بجای عدد یه حرف وارد کرد برنامه خطا بده و دوباره از اول اجرا شه ؟
خب بجای گرفتن اعداد به صورت مستقیم آنهارو به صورت کاراکتر بگیرید و لیستی از کاراکتر های مجازتون رو به عنوان مرجع در اول برنامه بگذارید و ورودی ها رو بصورت رشته ای و هر عدد در خانه ای مجزا بگیرید و تک تک خانه های ورودی را با کاراکتر های مجاز تون مقایسه کنید . اگر مطابقت داشت با دستور break از حلقه خارج شده و برنامه را به پایان ببرید در غیر این صورت برنامه به ابتدای حلقه رفته تا ......برنامه تمام شود