2014-10-18 4 views
-1

내 코드가 루프의 한 반복에 대해 원하는 결과를 제공합니다. 두 번째 반복에서 피보나치가 무엇을 요구하든 물어 보는 것보다 큰 피보나치를 출력하고 거기에서 풍선을 출력합니다. 나는 그 문제를 이해할 수 없다.while 루프 일시 중지

#include <iostream> 
using namespace std; 

int main() 
{ 
    bool exit; 
    int fib; 
    int fib1 = 1; 
    int fib2 = 2; 
    int fib3 = 0; 

    cout << "The first Fibonacci number is 1" << endl; 
    cout << "The second Fibonacci number is 2" << endl; 
    cout << "What other Fibonacci number would you like? Enter -888 to exit: "; 
    cin >> fib; 

    fib = fib - 2; 
    exit = fib == -888; 

    while(fib--) 
    { 

     fib3 = (fib1+fib2); 
     fib1 = fib2; 
     fib2 = fib3; 

     while(fib == 0) 
     { 

     cout << "...and the Fibonnaci is.... " << fib3 << endl; 
     cout << "What other Fibonnaci would you like? Enter -888 to exit:"; 
     cin >> fib; 

     } 
    } 


    return 0; 
} 
+1

문제점을 파악하기 위해 무엇을 시도 했습니까? 코드 덩어리를 던지고 "여기서 어떤 문제가 있는지"묻는 것은 SO가 무엇이 아닌가하는 것입니다. – user3791372

+1

은 fib1, fib2 및 fib3을 재설정합니다. 다음 반복 루프 전에. 프롬프트 루프가있는 이상한 장소라고해야합니다. 일반적으로 계산 루프는 프롬프트 루프에 의해 둘러 쌓여 있습니다. – WhozCraig

+0

아, 이제 더 의미가 있습니다. 루프에 들어가면 변수의 초기 값이 고려되지 않습니다. – Nebulan

답변

0

주된 문제점은 다음 번호를 계산하기 전에 fib1과 fib2를 재설정하지 않았다는 것입니다.

int main() 
{ 
    bool exit; 

    cout << "The first Fibonacci number is 1" << endl; 
    cout << "The second Fibonacci number is 2" << endl; 

    do 
    { 
     int fib; 
     int fib1 = 1; 
     int fib2 = 2; 
     int fib3 = 0; 

     cout << "What other Fibonacci number would you like? Enter -888 to exit: "; 
     cin >> fib; 

     fib = fib - 2; 
     exit = fib == -888; 

     if(!exit) 
     { 
      while(fib--) 
      { 
       fib3 = (fib1+fib2); 
       fib1 = fib2; 
       fib2 = fib3; 
      } 

      cout << "...and the Fibonnaci is.... " << fib3 << endl; 
     } 
    } while(!exit); 

    return 0; 
}