PDA

View Full Version : سوال: خاتمه برنامه با وارد کردن یک حرف



metalica
دوشنبه 31 خرداد 1389, 20:07 عصر
سلا دوستان . من ميخواستم يكي راهنمايي كنه كه چه طوري ميشه با استفاده از حلقه اي مثل while شرطي بزاريم كه برنامه حروفي رو بگيره تا كاربر عدد 0 را وارد كرد برنامه خاتمه پيدا كنه من خودم يه چيزايي نوشتم ولي كار نميكنه حلقه نامتناهي درست ميشه .


int name;
cin>>name;
while(name != 0)
{
switch(name)
{
دستورات بدنه
}
cin>>name;
}


اين حلقه باعث ميشه برنامه پايان نگيره ولي شرطش كار نميكنه . من مي خوام 0 رو زدم از برنامه بيام بيرون اگه كمك كنين ممنون ميشم

clover
دوشنبه 31 خرداد 1389, 20:28 عصر
اين حلقه باعث ميشه برنامه پايان نگيره ولي شرطش كار نميكنه . من مي خوام 0 رو زدم از برنامه بيام بيرون اگه كمك كنين ممنون ميشم

خب این برنامه درست کار میکنه به شرطی که فقط عدد وارد کنید.


شرطي بزاريم كه برنامه حروفي رو بگيره
وارد کردن حرف باعث میشه که یه خطا در ورودی رخ بده و چون شما این خطا را مدیریت نکردید حلقه ی نامتناهی اتفاق می افته
اگر می خواهید این اتفاق نیفته باید ورودی را از نوع کاراکتری بگیرید و یا اینکه بررسی کنید کاربر حتما عدد وارد کرده باشه

metalica
سه شنبه 01 تیر 1389, 08:32 صبح
شرمنده دوستان من از روي عجله اشتباهي وروديمو از نوع int گذاشته بودم . در اصل از نوع charتعريف شده .

char name;
cin>>name;
while(name != 0)
{
switch(name)
{
دستورات بدنه
}
cin>>name;
}
ولي با اين وجود من اگه 0 رو وارد كنم برنامه پيغام توي بدنه ي switch كه default اونه رو ميده
اين برنامه چاپ حروفه به شكل ستاره كه توي switch ديفالتش اينه كه اگه غير از حروف a-z و A-Z كاربر چيز ديگه اي وارد كرد پيغامي مبتني بر معتبر نبودن حروف چاپ شه . ولي من . رو ميزنم اين پيغام چاپ ميشه و هيچ جوري از بدنه خارج نميشه

وارد کردن حرف باعث میشه که یه خطا در ورودی رخ بده و چون شما این خطا را مدیریت نکردید حلقه ی نامتناهی اتفاق می افته
منظورتون از مديريت چيه و چه طوري اين كارو كنم ؟‌!!! راهنمايي كنين ممنون ميشم

saber187518
سه شنبه 01 تیر 1389, 09:35 صبح
با سلام
دوست عزیز اشتباه شما اینجاست


while(name!=0)

شما باید به جای عبارت بالا ، عبارت زیر را قرا دهید


while (name!='0') or while(name!=48)

موفق باشی

metalica
چهارشنبه 02 تیر 1389, 09:44 صبح
سلام دوست عزيز واقعا ممنون از راهنماييتون . خيلي كمكم كرد .
:بوس::تشویق::لبخندساده::قلب: