2016-07-10 5 views
0

Ich mache tatsächlich ein Hausaufgaben-Problem und ich habe das Programm ziemlich fertig. Mein einziges Problem ist, wenn ich einen Charakter oder eine Zahl eintrage, wird es nicht abgelehnt. Hier ist das Problem:Versuchen, mein Programm zu haben, Zahleneingaben zu verwerfen

Schreiben Sie ein Programm zum Überprüfen auf Symmetrierzeichen in den folgenden Sprachen: C++ (/ * * /,(), [], {}).

Ich habe eine Liste von if-Anweisungen eingerichtet, die sicherstellen, dass eine ungerade Anzahl von Symbolen (/ * * /,(), [], {}) es erkennt. Mein einziges Problem ist, wenn ich eine Zahl eintrage, wird sie nicht durch irgendeine meiner if-Anweisungen gefiltert (natürlich) und sie wird als ein "ausgewogener" Eintrag weitergegeben.

Zurück zu meiner anfänglichen Frage, gibt es eine Möglichkeit, dass ich irgendein 'int' erkennen und es zurückweisen kann? Hier ist eine meiner Versuche, irgendwie eine Vorstellung davon, was ich versuche zu tun zu:

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

Ich bin ein total Noob so dass jede Hilfe oder Punkt in der richtigen Richtung wäre toll

Antwort

3

Sie überprüfen könnten, für gültige integer-Eingänge, und diese nur ablehnen:

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

Sie wissen, was das nicht funktioniert hat, aber diese Antwort hat wirklich geholfen! Es hat mich über mein Setup nachdenken ... wenn ich das aufbringe, werde ich etwas Code schreiben, um zu zeigen, wie deine Antwort geholfen hat, es zu reparieren! ich danke dir sehr! – Sammy

0

es gibt viele mögliche Lösungen, aber einer meiner Favoriten ist eine Funktion aufzurufen, die es für mich behandelt.

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 
     } 
    } 
} 
Verwandte Themen