View Full Version : مبتدی: بررسی سورس یک برنامه (سوال)
esmaeel.kargar
یک شنبه 21 آبان 1396, 16:42 عصر
سلام، کد زیر رو برای تبدیل نمره 0تا 20 بصورت توصیفی A,B,C,D نوشتم. میخواستم دوستان یه نگاهی بندازن ببینن ایرادات کار چیه؟
ممنون.:لبخندساده:
//tabdil nomre be a,b,c,d
# include <iostream.h>
using namespace std;
int main ()
{
float score;
char factor;
cin >> score;
if (score<0)||(score>20)
{
cout<< "unavilable score";
}
else
{
switch (score)
case (score<=20)&&(score>18)
cout<<"A";
break;
case (score<=18)&&(score>16)
cout<<"B";
break;
case (score<=16)&&(score>12)
cout<<"C";
break;
case (score<=12)&&(score>10)
cout<<"D";
break;
case (score>10)
cout<<"E";
break;
}
}
m.r226
سه شنبه 30 آبان 1396, 22:02 عصر
using namespace std;
این رو صریحا استفاده کنی بهتره، مثلا بنویسی
std::cout<<
Ananas
پنج شنبه 09 آذر 1396, 20:35 عصر
سلام. ایراد این کد تو قسمت سویچ هست. بهتره با ایف بنویسید نه سویچ. یعنی عبارتهای شرطی ای که داخل کیس ها نوشتید رو فقط به شکل ایف و الس های پشت هم بنویسید.
چون اولا خود score از نوع اعشاری هست و وقتی وارد سویچ میشه به نوع صحیح تبدیل میشه.
دوما حاصل عبارات شرطی true و false هست که به حالت عدد صحیح میشه 1 و یا 0. که اگر تو مرحله ی کامپایل هم ارور نده (که میده، چون مقادیر کیس باید صریح و مشخص باشن) باز نتیجه اعداد یک تا بیست نمیشه. میشه صفر و یک. پس اگر بخاید به شکل سویچ بنویسید باید اولا score رو عدد صحیح فرض کنید ثانیا اعداد مورد نطر هر کیس رو پشت هم با کاما برای اون کیس بنویسید.
که به نظر if..else بهتره. مثال:
if (acore >20)
...
else if (score > 18)
...
else if (score > 16)
...
else if (score > 12)
...
else if (score > 10)
...
else
...
sh.m.e
دوشنبه 20 آذر 1396, 19:39 عصر
سلام. دوست عزیز بخش swich شما کلا ناذرست است. چیزی که شما مقابل case ها نوشتید یک عبارت شرطی است و لذا نتیجه آن 0 یا 1 خواهد بود و ربطی به نمره مورد نظر ندارد. در واقع شما در رابطه با نحوه عملکرد switch دچار سوئ برداشت هستی. در هنگام اجرای switch عبارت مقابل case محاسبه میشه و اگر نتیجه آن برابر با کلید مورد نظر شما باشد عملیات مربوطه اجرا میشوند. چیزی که شما مقابل case ها نوشتی عبارت شرطی است که نتیجه محاسبه آن 0 یا 1 است و ربطی به کلید مورد نظر شما (یعنی نمره فرد) نداره. موفق باشی.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.