ورود

View Full Version : سوال: مشکل با تابع switch-case



امیر حسینی مقدم
پنج شنبه 28 دی 1391, 09:10 صبح
مهندسین عزیز سلام.
ببخشید اما من با تابه سویتچ کیس تو برلند سی مشکل پیدا کردم.
برنامه ساده ایه.باید یه عددرو بگیره متناسب با حرف لاتینی که بعدش میزنیم سینوس کسینوس وتانژانت کتانژانتو حساب کنه.ولی چند تا مشکل خورده.مثلا اول اینکه پس از وارد کردن عدد و حرف باید دوبار اینتر بزنیم تا خروجی بده.بعد هم اصلا توجهی به حرف شرط نداره و یکراست میره سراغ شرط default:اون.تازه شرط اخرهم درست انجام نمیشه.در حقیقت فقط یه سری خروجی میده در یک قالب خاص.یعنی چه عدد بدی چه یه سری حروف چه ه مخلوتشون یه دسته جواب میده.حقیقتا فکرم به جایی قد نمیده وگرنه مزاحم وقتتون نمیشدم.در ضمن بگم با borland C++‎v5.2نوشتم که تریاله.احتمالشو میدم که از نرم افزارهم باشه چون یه جورایی حس میکنم داره ریپ میزنه.حتی از کدهای آماده اینترنت هم مشکل میگیره
ممنون میشم کمک کنید
[#include <math.h>
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
void main()
{
cout<<"lotfan yek adad ra vared konid.sepas baraye gereftane har yek az halat dar edame adad harfe morede nazar ra vared nemude va 2bar Enter ra befesharid:cos(c-C)-sin(s-S)-tan(t-T)-cot() ";
float x;
cin>>x;
char ch;
ch = getch ();
switch (ch)
{
case 'c':
case 'C':
cout<< cos (x);
break;
case 's':
case 'S':
cout<< sin (x);
break;
case 't':
case 'T':
cout<< tan (x);
break;
default:
cout<< 1/tan (x);
}
printf (" baraye kharej shodan yek klid ra befesharid");
getch();
}

saied_hacker
پنج شنبه 28 دی 1391, 09:41 صبح
این کد مشکلی نداره خودمم برا اطمینان تستش کردم هیچ مشکلی نداره :)

بورلند نداشتم ولی با gcc و codeblock تست کردم هیچیش نیست.
#include <math.h>
#include <conio.h>
#include <iostream>
#include <stdio.h>


using namespace std;
int main()
{
cout<<"lotfan yek adad ra vared konid.sepas baraye gereftane har yek az halat dar edame adad harfe morede nazar ra vared"
<<"nemude va 2bar Enter ra befesharid:cos(c-C)-sin(s-S)-tan(t-T)-cot() \n";
float x;
cin>>x;
char ch;
ch = getch ();
switch (ch)
{
case 'c':
case 'C':
cout<< cos (x);
break;
case 's':
case 'S':
cout<< sin (x);
break;
case 't':
case 'T':
cout<< tan (x);
break;
default:
cout<< 1/tan (x);
}
printf ("\n baraye kharej shodan yek klid ra befesharid");
getch();
return 0;
}


ولی کلا هرچی هدر بود اضافه کردیا :)

sr2m72
پنج شنبه 28 دی 1391, 11:29 صبح
سلام
شما بايد اول درجه رو به راديان تبديل كنيد بعد به توابع ارسال كنيد.
شما وقتي ورودي هاتون رو توي يك خط وارد مي كنيد به عنوان يك ورودي شناخته ميشه مگر اينكه بينشون Space باشه.
شما هر دوتا ورودي رو پشت سر هم وارد ميكنيد به همين خاطر همش كد ديفالت رو اجرا ميكنه و بايد دوبار اينتر هم بزنيد.
برنامه رو واست تغيير دادم:

#include <math.h>
#include <conio.h>
#include <iostream>
#include <stdio.h>


using namespace std;
int main()
{
cout<<"lotfan yek adad ra vared konid.sepas baraye gereftane har yek az halat dar edame adad harfe morede nazar ra vared"
<<"nemude va 2bar Enter ra befesharid:cos(c-C)-sin(s-S)-tan(t-T)-cot() \n";
float x;
cin>>x;
float r=(3.14 * x)/180;
char ch;
ch = getch ();
switch (ch)
{
case 'c':
case 'C':
cout<< cos (r);
break;
case 's':
case 'S':
cout<< sin (r);
break;
case 't':
case 'T':
cout<< tan (r);
break;
default:
cout<< 1/tan (r);
}
printf ("\n baraye kharej shodan yek klid ra befesharid");
getch();
return 0;
}


موفق باشيد.

امیر حسینی مقدم
پنج شنبه 28 دی 1391, 14:33 عصر
مهندسای عزیز ممنون.تشکر فراوان.ببخشید دیگه تازه کاریه منو.تا تجربیات دوستانرو منم تجربه کنم گاها مجبور میشم اینجور سؤالات شاید پیش پا افتادرو بپرسم.به هرحال ممنون وقت گذاشتید.