2016-12-06 1 views
-2

私は入力を求め、配列(number [i])の中に入れて3つの異なる単位に変換する簡単なプログラムを作っています。それを別のユニットに変換した後、ユーザが与えた最低と最高の数字を表示できる必要があります。ユーザ入力から来る配列の最小値と最大値を表示する

dowhileループを使用してユーザーからの入力を受け取りました。do while loopの後に、数字[i]配列内の入力から最小値と最大値を計算する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; 
+0

コメントは議論の対象外です。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/130032/discussion-on-question-by-james-bong-show-min-and-max-values-of-array-それはそうです)。 – deceze

答えて

1

あなたが現在あなたが最低数

をするために mxを使用している mx

のための出力を持ち続け、2番目のcoutの文に誤りがある最小番号の出力のための最高の番号を取得している場合

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

固定

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

私はプログラムを実行し、2つの異なる値を入力しました。私の最初の入力は10で、yを押してもう一度入力した後、私は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

あなたが代わりにnumberの大きさと比較し、number[i]iを比較しています。

関連する問題