2017-12-01 32 views
0

코드를 작성하려고합니다. 최소 및 최대 5 개의 숫자 입력이 Palindrome인지 확인합니다. 나는 사용자 입력이 단지 숫자인지를 확인하고 그것을 정확히 5 개의 숫자로 제한하는 데 문제가있다.C++, 정확히 5 개의 숫자와 숫자 만 사용하도록 강제

나는 cinfail을 시도했지만 문자를 무시함으로써 2h34j를 허용합니다. 5 문자가 모두 숫자인지 확인하고, 그렇지 않으면 루프를 다시 시작합니다.

문자열이나 문자를 변수로 사용할 수 없습니다. 단지 int.

팁이 있습니까?

#include <iostream> 
using namespace std; 

int main() 
{ 
    int n, num = 0, siffra, rev = 0; 
    const int inm = 0; 
    cout << "Mata in ett femsifrigt heltal: "; 
    cin >> num; 
    n = num; 
    do 
    { 
     siffra = num % 10; 
     rev = (rev * 10) + siffra; 
     num = num/10; 
    } while (num != 0); 

    cout << " Inmatningen baklänges blir: " << rev << endl; 

    if (n == rev) 
     cout << " Nummret är en palindrom\n"; 
    else 
     cout << " Numret är inte en palindrom\n"; 

    return 0; 
} 
+0

정확히 5 자리 유효 숫자가있는 모든 정수는 10000과 99999 사이입니다. 사용자가이 범위의 숫자를 입력했는지 여부를 확인할 수 있습니다. 'string'이나'char's에 입력 할 수 없다면, 범위 검사는 여러분이 할 수있는 최선의 방법이라고 생각합니다. –

답변

0

그래서 범위를 확인하고 루프를 추가합니다. 편지를 쓸 때를 제외하고는 모든 좋은 점이 있습니다. 프로그램은 멈추지 않고 모든 견해를 반복합니다. 내가 숫자로 쓰는다면 그것은 5 자리 숫자이어야하고 cin으로 되돌아 가야한다고 말할 것입니다. 그러나 편지를 쓰 자마자 감정의 고리는 끝나지 않습니다. 무엇이 문제 일 수 있습니까?

#include <iostream> 
using namespace std; 

int main() 
{ 
    setlocale(LC_ALL, "swedish"); 
    while (true) { 
     int n, num = 0, siffra, rev = 0; 
     const int inm = 0; 
     cout << "Mata in ett femsifrigt heltal: "; 
     cin >> num; 
     if (num >= 9999 && num <= 100000) { 
      n = num; 
      do 
      { 
       siffra = num % 10; 
       rev = (rev * 10) + siffra; 
       num = num/10; 
      } while (num != 0); 

      cout << " Inmatningen baklänges blir: " << rev << endl; 

      if (n == rev) 
       cout << " Nummret är en palindrom\n"; 
      else { 
       cout << " Numret är inte en palindrom\n"; 
      } 
      char ch = 'n'; J/j 
      cout << "Testa igen, [j/n] ? "; **// Yes or no option to restart the program** 
      cin >> ch; 
      if (ch == 'J' || ch == 'j') 

       continue; 
      else 
       break; 
     } 
     else; { 
      cout << " Var vänlig mata in exakt 5 siffror, och inga andra tecken!\n"; 
      continue; **//if the user writes to few numbers or too many, or uses letter, the program should reloop.** 
     } 
    } 
    return 0; 
}