2016-07-10 20 views
0

私は実際に宿題の問題を抱えています。私の唯一の問題は、文字や数字を入力すると、それを拒否できないということです。私のプログラムが番号入力を拒否しようとしています

C++(/ * * /、()、[]、{})の言語でバランシングシンボルをチェックするプログラムを作成します。

記号(/ * *、()、[]、{})の数量にばらつきがあるかどうかを確認するif文のリストを設定しました。私の唯一の問題は、if文(自然に)によってフィルタリングされず、「バランスの取れた」エントリとして渡される数値を入力するときです。

私の初期の質問に戻って、私はどのような 'int'を検出して拒否させることができるのでしょうか?ここでちょっと私がやろうとしていますかのアイデアを与えるために私の試みの一つである:

if (top == int) 
    { 
     cout << "Invalid Entry"; \\an integer is detected 
     main(); \\due to an int input it would rout back through to start 
    } 

私は合計noobのだそう右方向に任意のヘルプまたはポイントは、あなたがチェックできる素晴らしい

答えて

3

だろう有効な整数入力のために、そしてちょうどこれらを拒否:

std::string input; 
while(std::cin >> input) { 
     int dummy; 
     std::istringstream iss(input); 
     if(cin >> dummy) { 
      cout << "Invalid Entry" << endl; //an integer is detected 
      continue; // Read again 
     } 
     // ... process input 
} 
+0

あなたはそれがうまくいかないことを知っていますが、その答えが本当に助けになりました!私の設定について考えています...私がこれを手に入れたら、答えがどのように修正されたかを示すコードの一部を投稿します!どうもありがとうございます! – Sammy

0

あり、多くの可能な解決策はありますが、私のお気に入りの一つは、私のためにそれを処理する関数を呼び出すことです。

bool IsInteger(string line) { 
    for (int i=0; i<line.size(); ++i) { 
     if (!isdigit(line[i])) { 
      return false; 
     } 
    } 

    return true; 
} 

int main() { 
    string input; 

    while (cin >> input) { 
     if (IsInteger(input)) { 
      cout << "Integer detected!" << endl; 
     } else { 
      // Do stuff 
     } 
    } 
} 
関連する問題