2017-12-01 10 views
0

コードを書くときに、最小5文字と最大5文字の数字がPalindromeであるかどうかを確認します。私は、ユーザーの入力が数字だけであるかどうかを確認し、それを正確に5つの数字に制限するのに問題があります。C++、ユーザー入力に5つの数字と数字だけを使用するようにします

私はcinfailを試しましたが、文字を無視することで2h34jを許可しています。私は5文字すべてが数字であるかどうかをチェックし、そうでなければループを再開させたい。

変数としてstringとcharを使用することはできません。 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; 
} 
関連する問題