피보나치 구하는 프로그램인데요..
메인에서 x 또는 X누르면 빠져나오게 프로그래밍 했는데
x 또는 X누르면 무한루프에 빠지네요..
이렇게도 해보고 저렇게도 해봤는데, 계속 무한 루프에...
뭐가 잘못된 걸까요..?
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 함수 선언부
const vector<int>* fib( int );
inline bool is_ok(int);
void display_message(const string &, int);
int main()
{
int input;
cout << "Enter a number(If you want to exit a program, push 'x') : ";
cin >> input;
// x나 X를 누를때까지 루프 반복
while(input != 'x' || input != 'X'){
// 함수의 컨테이너의 반환값을 받는다
const vector<int> *ppp = fib(input);
// 객체 출력
for(int i=0; i<input; ++i)
cout << (*ppp)[i] << ' ';
cout << "Enter a number(If you want to exit a program, push 'x') : ";
cin >> input;
}
return 0;
}
inline bool is_ok(int n)
{
const int max_size = 1024;
const string msg( "Requested size isn't supported" );
if( n <=0 || n > max_size ){
display_message( msg, n );
return false;
}
return true;
}
const vector<int>* fib( int n )
{
static vector<int> elem;
if( ! is_ok(n) ){
return 0;
}
for( int ix = elem.size(); ix < n; ++ix ){
if( ix == 0 || ix == 1 )
elem.push_back(1);
else {
elem.push_back( elem[ix-1] + elem[ix-2] );
}
}
return &elem;
}
void display_message(const string &msg, int)
{
cout << msg << endl;
}
|