2016-12-06 57 views
-2

我正在制作一个简单的程序,它将要求输入,将其放入一个数组(数字[i])并将其转换为三个不同的单位。将其转换为不同的单位后,我必须能够显示用户提供的最低和最高号码。显示来自用户输入的数组的最小值和最大值

我使用的是do while循环,从用户获取输入,以及do while loop后,我已经把for loop,将计算从输入即[I]数组数内的最小和最大数量。但输入2个输入后,该程序只显示了我的最高号码,最低的号码显示我0

下面是它的样子。

do{ 
clrscr(); 
cout<<"Enter a number:"; 
cin>>number[i]; 
cout<<"\nPlease choose a unit"; 
cout<<"\n<A> meter"; 
cout<<"\n<B> centimeter"; 
cout<<"\n<C> inch"; 
cout<<"\n<D> feet"; 
cout<<"\nPlease enter your chosen unit: "; 
cin>>unit; 
switch(unit) 
{ 
case 'a': 
case 'A': 
i=0; 
m = number[i] * 1; 
cm = 1000 * m; 
in = m/0.0254; 
ft = m/0.3048; 
cout<<"\nYou have chosen meter for unit"; 
cout<<"\nYou have entered "<<number[i]<<" meters"; 
cout<<"\n"<<m<<" meters is equal to\n"<<cm<<" centimeters"; 
cout<<"\n"<<in<<" inches"; 
cout<<"\n"<<ft<<" feet"; 
cout<<"\n\nDo you want to input another value? y/n:"; 
cin>>y; 
if(y=='y') 
{ 
x=1; 
} 
else if(y=='n') 

{ 
x=0; 
} 
break; 

case 'b': 
case 'B': 
cm = number[i] * 1; 
m = cm /1000; 
in = cm * 0.393701; 
ft = cm * 0.0328084; 
cout<<"\nYou have chosen centimeter for unit"; 
cout<<"\nYou have entered "<<number[i]<<" centimeters"; 
cout<<"\n"<<cm<<" centimeters is equal to\n"<<m<<" meters"; 
cout<<"\n"<<in<<" inches"; 
cout<<"\n"<<ft<<" feet"; 
cout<<"\n\nDo you want to input another value? y/n:"; 
cin>>y; 
if(y=='y') 
{ 
x=1; 
} 
else if(y=='n') 
{ 
x=0; 
break; 
} 
break; 
case 'c': 
case 'C': 
in = number[i] * 1; 
m = in * 0.0254; 
cm = in * 2.54; 
ft = in * 0.0833333; 
cout<<"\nYou have chosen inches for unit"; 
cout<<"\nYou have entered "<<number[i]<<" inches"; 
cout<<"\n"<<in<<" inches is equal to\n"<<m<<" meters"; 
cout<<"\n"<<cm<<" centimeters"; 
cout<<"\n"<<ft<<" feet"; 
cout<<"\n\nDo you want to input another value? y/n:"; 
cin>>y; 
if(y=='y') 
{ 
x=1; 
} 
else if(y=='n') 
{ 
x=0; 
} 

break; 
case 'd': 
case 'D': 
ft = number[i] * 1; 
m = ft*0.3048; 
in = ft*12; 
cm = ft * 30.48; 
cout<<"\nYou have chosen feet for unit"; 
cout<<"\nYou have entered "<<number[i]<<" feet"; 
cout<<"\n"<<ft<<" feet is equal to\n"<<m<<" meters"; 
cout<<"\n"<<cm<<" centimeters"; 
cout<<"\n"<<in<<" inches"; 
cout<<"\n\nDo you want to input another value? y/n:"; 
cin>>y; 
if(y=='y') 
{ 
x=1; 
} 
else if(y=='n') 
{ 
x=0; 
} 
break; 
default: 
cout<<"\nYou have entered an invalid choice!"; 
x=1; 
break; 

} 

}while(x==1); 

for(i=0; i<sizeof(number)/sizeof(*number);i++) 
{ 
if(mn>number[i]) 
{ 
    mn=number[i]; 
} 
else if (mx<number[i]) 
    mx= number[i]; 
} 

cout<<"\nHighest number is : "<<mx; 
cout<<"\nLowest number is: "<<mn; 
+0

评论是不适合扩展讨论;这个对话已经[转移到聊天](http://chat.stackoverflow.com/rooms/130032/discussion-on-question-by-james-bong-show-min-and-max-values-of-array-那意志)。 – deceze

回答

1

,如果你得到了最低的数字输出中有你的第二个cout语句错误,你继续对mx

输出你目前正在使用mx的最低数量

数最高
cout<<"\nLowest number is: "<<mx; 

固定

cout<<"\nLowest number is: "<<mn; 
+0

我已经运行程序并输入了2个不同的值,我的第一个输入是10,然后按y再次输入我输入了20.如果我的程序是正确的,最低的数字应该是10,最高的数字应该是20,但是我得到的最低数字是0. –

+0

Plz注意这个问题已经被编辑了,这个答案是在downvoting之前为问题的先前版本编写的。 –

1

使用minmax

const auto result = minmax(cbegin(number), cend(number)); 

cout << "\nHighest number is : " << result.first << "\nLowest number is: " result.second << endl; 
1

您比较inumber[i],而是与number大小比较。

相关问题