2012-11-04 6 views
0

출력물에 양수 또는 음수가 반복해서 인쇄됩니다. 무한 루프가 발생하는 이유는 무엇입니까? 당신이 while(num!=0)을 가지고 루프에서 그 값을 변경할 수 있습니다 아무것도 때문에무한 루프가 발생하는 이유는 무엇입니까?

include iostream 
using namespace std; 

int main() 
{ 
    int num; 

    cout<<"enter number"<<endl; 
    cin>>num; 

    while(num!=0) 
    { 
     if(num>0) 
      cout<<"positive"<<endl; 
     else 
      cout<<"negative"<<endl; 
    } 

    return 0; 
} 

답변

0

개선 된 버전 :

include iostream 
using namespace std; 

int main() 
{ 
    int num; 

    do 
    { 
     cout<<"enter number"<<endl; 
     cin>>num; 

     if(num>0) 
      cout<<"positive"<<endl; 
     else 
      cout<<"negative"<<endl; 
    }while(num!=0); 

    return 0; 
} 
입니다
1

: 나는 다음을 사용했다.

0

num의 값은 루프 본문에서 변경되지 않습니다.

0

while 루프의 조건이 절대로 false가 아니므로 루프 내에 num 값을 변경해야합니다.

0

루프에서도 값을 읽을 필요가 있습니다. 당신이 다음하지 않으면 납입은 변경되지 않습니다 영원히 동일 따라서 당신이 (NUM 개의 == 0) 무한 루프 또는 아무것도

{int num; 

cout<<"enter number"<<endl; 
cin>>num; 

while(num!=0) 
{ 
    cout<<"enter number"<<endl; 
    cin>>num; 

    if(num>0) 
     cout<<"positive"<<endl; 
    else 
     cout<<"negative"<<endl; 
} 
return 0; } 
0

이 때문에의 논리이다 얻을 중 하나를 남아 당신의 코드. 먼저 표준 입력에서 숫자를 읽은 다음 숫자가 0이 아닌 조건에 따라 while 루프를 만듭니다. 따라서 표준 입력을 통해 제공된 num 값이 0이 아니면 프로그램에서 루프 본문을 반복합니다 반복해서.

이 코드에서는 while 루프 자체가 필요하지 않습니다. 다만 NUM 부정적/긍정적인지에 따라 사용자에게 메시지를 인쇄하고 싶었다면, 당신은 단지 경우/다른 부분을 떠날 수와 같이 while 루프를 제거 :

using namespace std; 
    int main() { 

    int num; 

    cout<<"enter number"<<endl; 
    cin>>num; 

    while(num!=0) 
    { 
     if(num>0) 
      cout<<"positive"<<endl; 
     else 
      cout<<"negative"<<endl; 
    } 

    return 0; 
} 

또 다른 possiblity가 될 것입니다 사용자 기회의 num 여러 번 입력하고이 같은 특정 조건 while 루프 깰 :

using namespace std; 
int main() { 

int num; 

do { 
cout<<"enter number"<<endl; 
cin>>num; 
    if(num>0) 
     cout<<"positive"<<endl; 
    else if(num < 0) 
     cout<<"negative"<<endl; 
} while(num!=0); 

return 0; 

} 여기

루프의 num이 0으로 동일한 경우 당신은 명시 적으로 탈옥 수 완료됩니다 break 상태의 루프 일부 조건에 기초한 멘토. 여기 madflame991의 answere을 바탕으로

관련 문제