2016-12-06 2 views
-2

나는 입력을 요구하고 배열 (number [i]) 안에 넣고 세 개의 다른 단위로 변환하는 간단한 프로그램을 만들고 있습니다. 다른 단위로 변환 한 후 사용자가 부여한 가장 낮은 수와 가장 높은 수를 표시 할 수 있어야합니다.사용자 입력에서 오는 배열의 최소값과 최대 값 표시

사용자로부터 입력을 얻기 위해 do while 루프를 사용하고 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

의 출력을 계속 두 번째 cout 문에 실수가 낮은 번호의 출력에 가장 많은 수를 얻는 경우

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

고정

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

나는 프로그램을 실행하고 2 개의 다른 값을 입력했다. 나의 첫 번째 입력은 10이고 다시 입력하기 위해 y를 누른 후 나는 20을 입력했다. 내 프로그램이 맞으면 가장 낮은 숫자는 10이고 가장 높은 숫자는 20이어야하지만 내가 받고있는 가장 낮은 숫자는 0입니다. –

+0

Plz는 질문이 편집되었으며,이 대답은 downvoting하기 전에 질문의 이전 버전을 위해 작성되었음을 유의하십시오. –

1

사용 minmax : 당신은 number[i]i을 비교하는

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

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