显示将来自用户输入的数组的最小值和最大值

时间:2016-12-06 13:48:34

标签: c++ arrays loops do-while turbo-c++

我正在编写一个简单的程序,要求输入,将其放入数组(number [i])并将其转换为三个不同的单位。将它转换为不同的单位后,我必须能够显示用户给出的最低和最高数字。

我正在使用do while循环来获取用户的输入,并且在do while loop之后我放了一个for loop来计算数字内输入的最小和最大数量[我]阵列。但输入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;

3 个答案:

答案 0 :(得分:1)

如果您获得最低数字输出的最高数字,则在您的第二个cout语句中出现错误,您仍然可以获得mx的输出

目前,您使用mx作为最低号码

cout<<"\nLowest number is: "<<mx;

修正了

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

答案 1 :(得分:1)

使用minmax

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

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

答案 2 :(得分:1)

您正在将inumber[i]进行比较,而是将其与number的大小进行比较。