2016-10-16 1 views
0

Also ich kämpfe ein bisschen - wie kann ich Funktion machen, um zu überprüfen, ob die Benutzereingabe ganzzahlig ist? Ich habe es versucht/während ... aber irgendwie funktioniert es nicht.Überprüfen, ob der Eingang ganzzahlig oder über Null ist

void pievieno(int *a ,int jaunais,int vecais){ 
int jaunais_skaitlis; 
cout<< "Ievadiet skaitlus" <<endl; 
for (int i=vecais;i<jaunais;i++) 

{ 
    cin >> jaunais_skaitlis; 
    a[i] = jaunais_skaitlis; 
} 

Vielen Dank im Voraus!

+2

cin selbst sollte Ihnen sagen, ob es Integer lesen konnte oder nicht. Es sollte eines der Fehlerflags gesetzt haben. – Incomputable

Antwort

0

Wenn Sie stream >> variable aufrufen, je nach Typ variable, wird die stream versuchen, Zeichen zu verarbeiten, um etwas zu erhalten, das für einen solchen Variablentyp gültig ist. Wenn dies nicht der Fall ist, wird stream s failbit eingestellt, damit Sie das überprüfen können.

for (int i=vecais;i<jaunais;i++) 
{ 
    cin >> jaunais_skaitlis; 
    if (cin.fail()) 
    { 
     // abort, user inputed something, which is not integer. 
    } 
    a[i] = jaunais_skaitlis; 
} 

Vorsicht, dass stream wird so viel tun, wie es kann tatsächlich etwas von dem Eingang zu extrahieren. Wenn Sie also 123qffe541e eingeben, handelt es sich tatsächlich um eine gültige Eingabe, jaunais_skaitlis enthält 123 und der Rest der Zeichen verbleibt im Stream (daher bei der nächsten Iteration fehlgeschlagen).

Wenn Sie wirklich überprüfen wollen, ob die ganze Eingabe eine Ganzzahl ist, müssen Sie mehr Zeichen lesen (z. B. lesen Sie std::string, entweder ein einzelnes Wort oder ganze Zeile, je nach Ihren Bedürfnissen) und dann verarbeiten.

1

Nun, es hat keinen Sinn, den Datentyp der Benutzereingabe zu überprüfen, weil Sie die Eingabevariable absichtlich als Ganzzahl definiert haben, indem Sie int jaunais_skaitlis; verwenden. Daher erhalten Sie unabhängig davon, was der Benutzer eingibt, einen Integer-Wert für die Eingabe.

Aber was Sie tun können, definieren Sie den Datentyp etwas anderes als integer, vielleicht ein float, und dann überprüfen, ob es eine ganze Zahl, float oder etwas anderes ist.

+1

aber wenn Benutzer wie ein Zeichen zum Beispiel ganzes Programm nur eingibt .... – Krichukzz

+0

Dann, wie man überprüft, ob die Eingabe 'a' ist? – songyuanyao

+0

Ich verstehe die Problemdomäne hier nicht richtig. Je nach den Zielen des Programms könnte es viele Möglichkeiten geben, dieses Problem zu lösen. Man könnte einfach arbeiten und auch ASCII-Werte vergleichen. Dazu können wir die Eingabevariable mit 'char' initialisieren. – Pragun

1

Sie sollten die Eingabe des Benutzers mit einer Zeichenfolge akzeptieren und prüfen, was darin enthalten ist. Es gibt viele Methoden, um Benutzereingaben zu überprüfen. Der mächtigste Weg ist Regex.

Verwandte Themen