PDA

View Full Version : سوال: برگشتن به شروع switch



kenman
یک شنبه 01 بهمن 1391, 01:38 صبح
با سلام . دوستان استادمون از ما اینو خواست :
-------------------
برنامه ای بنویسید که از یک آرایه 10 خانه ای از نوع float تشکیل شده که در ابتدا محتویات همه خانه ها صفر است. برنامه پس از اجرا شدن منویی به شکل زیر نمایش میدهد:



I for input
M for minimum
X for maximum
S for sum
A for average




در صورتیکه کاربر حرف I را فشاردهد تابعی به نام () input اجرا می شود و 10 عدد را از کاربر دریافت می کند و در 10 خانه آرایه قرار می گیرد. اگر کاربر حرف M را تایپ کند تابعی به نام ()minimumاجرا می شود از میان 10 عدد موجود در آرایه کوچکترین عدد پیدا میشود و نمایش داده می شود.
اگر کاربر حرف Xرا تایپ کند تابعی به نام ()Maximumاجرا می شود از میان 10 عدد موجود در آرایه بزرگترین عدد پیدا میشود و نمایش داده می شود. اگر حرف S تایپ شود تابعی به نام ()Sum اجرا می شود و مجموعه اعداد 10 خانه آرایه محاسبه و نمایش می یابد.
اگر حرف A تایپ شود تابعی به نام ()Average اجرا می شود و میانگین اعداد 10 خانه آرایه محاسبه و نمایش می یابد.
--------------------------------
اینم از کد من :
-----------------------------------

#include<iostream.h>
#include<conio.h>
int mrinput();
int mrminimum(float m);
int mrmaximum(float x);
int mrsum(float s);
int mraverage(float v);
int message();
int iv=0;
float a[9];
void main()
{
clrscr();
char c;
cout<<"i for input number \n";
c=getch();
switch (c)
{
case 'i':
mrinput();
message();
c=getch();
case 'm':
cout<<mrminimum(0)<<"\n";
message();
c=getch();

case 'x':
cout<<mrmaximum(0)<<"\n";
message();
c=getch();

case 's':
cout<<mrsum(0)<<"\n";
message();
c=getch();

case 'a':
cout<<mraverage(0)<<"\n";
message();
c=getch();

}
}
int mrinput()
{
for(int i=0;i<=9;i++)
{
clrscr();
cout<<"Enter Number "<<i+1<<"\n";
cin>>a[i];
}
iv=1;
cout<<"Enter number Is Complate\n";
return 0;
}
int mrminimum(float m)
{
float min;
min=a[0];
for (int i=1;i<=9;i++)
{
if(min>a[i])
{
min=a[i];
}
}
m=min;
return m;
}
int mrmaximum(float x)
{
float max;
max=a[0];
for (int i=1;i<=9;i++)
{
if(max<a[i])
{
max=a[i];
}
}
x=max;
return x;
}
int mrsum(float s)
{
float sum;
for(int i=0;i<=9;i++)
{
sum=sum+a[i];
}
s=sum;
return s;
}
int mraverage(float v)
{
float ave;
for(int i=0;i<=9;i++)
{
ave=ave+a[i];
}
v=ave/10;
return v;
}
int message()
{
cout<<" I For Input Number.\n M For Minimum.\n X For Maximum.\n S For Sum.\n A For Average.\n";
return 0;

}
----------------------------
مشکل من اینه:
برای اولین بار که i وارد میشه کارشو درست انجام میده . اما بعد از این که i وارد شد. مثلا کاربر هر چی بزنه یه چیزنشون میده. اگر میشه کمکم کنید.

omidshaman
یک شنبه 01 بهمن 1391, 10:03 صبح
بعد هر case بزار

break;
بعد کل قسمت switch case رو بزرا داخل یک while که تکرار بشه
و این که شما از getch که استاندارد هم نیست استفاده کردی باید برای وقتی هم که کاربر اینتر یا هر کلید دیگه ای میزنه هم یک فکری بکنی
یعنی مثلا default رو هم باید بزاری تو Switch
حلا اگر تو دریافت عددا طرف بزنه abx چی ؟ کلا برنامه میریزه به هم
به جا getch هم به نظر من اگر getchar ّّبزاری برنامت جالبتر میشه

kenman
دوشنبه 02 بهمن 1391, 01:19 صبح
همینکارو که گفتی کردم دادا اما وقتی ای رو میگرفت بسته میشد. فکر کنم دلیلش
break;
باشه. دادا اگر میتونی سریع کمکم کن باید زوت تحویل بدم . دمت گرم جبران میکنم.

kenman
دوشنبه 02 بهمن 1391, 02:40 صبح
داداش حله . کارم راه افتاد. خیلی اقایی.:قلب::قلب::قلب::قلب:

jannatmakan
دوشنبه 02 بهمن 1391, 03:15 صبح
بفرمایید اصلاح شد. یکسری اشتباهات فاحش درون کد شما موجود بود که حل شد. فقط کافیست که با کد قبلیتون مقایسش کنید.

یا علی (ع)



#include<iostream.h>
#include<conio.h>
int mrinput();
int mrminimum(float m);
int mrmaximum(float x);
int mrsum(float s);
int mraverage(float v);
int message();
int iv=0;
float a[9];

void main()
{
clrscr();
char c;
message();

while(1)
{
c=getch();

if(c=='e')
break;//exit from while

switch (c)
{
case 'i':
mrinput();
break;
case 'm':
cout<<mrminimum(0)<<"\n";
break;
case 'x':
cout<<mrmaximum(0)<<"\n";
break;
case 's':
cout<<mrsum(0)<<"\n";
break;
case 'a':
cout<<mraverage(0)<<"\n";
break;
}
}
}
int mrinput()
{
for(int i=0;i<=9;i++)
{
clrscr();
cout<<"Enter Number "<<i+1<<"\n";
cin>>a[i];
}
iv=1;
cout<<"Enter number Is Complate\n";
message();
return 0;
}
int mrminimum(float m)
{
float min;
min=a[0];
for (int i=1;i<=9;i++)
{
if(min>a[i])
min=a[i];
}
m=min;
return m;
}

int mrmaximum(float x)
{
float max;
max=a[0];
for (int i=1;i<=9;i++)
{
if(max<a[i])
{
max=a[i];
}
}
x=max;
return x;
}

int mrsum(float s)
{
float sum;
for(int i=0;i<=9;i++)
{
sum=sum+a[i];
}
s=sum;
return s;
}

int mraverage(float v)
{
float ave;
for(int i=0;i<=9;i++)
{
ave=ave+a[i];
}
v=ave/10;
return v;
}

int message()
{
cout<<" I For Input Number.\n M For Minimum.\n X For Maximum.\n S For Sum.\n A For Average.\n";
return 0;
}