nur Zahlen bzw. Buchstaben eingabe erlauben
-
Hallo,
wie bekomme ich es hin, das der Benutzer nur Zahlen / bzw Buchstaben eingeben kann.
Simples beispiel:
wie alt bist du?
eingabe: blablaAusgabe: Fehler, bitte zahl eingeben.
oder halt: Wie heißt du?
eingabe: Riddick__
Ausgabe:Fehler, nur Buchstaben sind erlaubt!Wenn in meinem programm nämlich jemand einen Buchstaben eingiebt, läuft sich das in den untergang...
(Hab bei google bei der Sucheingabe - c++ nur zahleneingabe / nur zahlen erlauben / nur zahlen zulassen, nix gefunden..)
und ich habe noch ein kleines problem, das sieht wie folgt aus.
Ergebnis=Speicher[1]; for (unsigned i=2; i<=Zahl; i++) { if (Speicher[i] == 0) { cout<<endl; cout<<"Felher !Division durch 0!"; cout<<endl; break; } else { Ergebnis=Ergebnis/Speicher[i]; cout<<endl; cout<<"Ergebnis der Division: "<<Ergebnis; cout<< endl; break; }
Der Anwender kann erst sagen, mit wie vielen zahlen er rechnen möchte.
sagen wir mal 4.
dann gebe ich aus
x1; x2; x3; x4.
die werte werden im array gespeichert und dann berechnet..
das problem ist nur, das bei mir die Funktion nur gegebn ist, wenn die 0 an zweiter stelle steht. Was ist daran falsch? Frage ich so nicht ab, ob ein Speicherplatz die 0 halt?
mfg
lg
-
Nur zahlen:
string s; cin >> s; sstringstream ss; ss << s; int i; ss >> i; if(!ss) { cerr << "keine gültige zahl" << endl; }
Nur Buchstaben:
string s; cin >> s; bool ok = true; for_each(begin(s), end(s), [&](char c) { ok &= isalpha(c); }); if(!ok) { cerr << "Fehler, nur Buchstaben sind erlaubt!" << endl; }
-
Q schrieb:
Nur zahlen:
for_each(begin(s), end(s), [&](char c)
Happy Hacking!
-
Q schrieb:
Nur zahlen:
string s; cin >> s; sstringstream ss; ss << s; int i; ss >> i; if(!ss) { cerr << "keine gültige zahl" << endl; }
Wieso so viele Umwege?
#include <limits> int main() { int age; cout << "Alter:"; while(!(cin >> age)) { // Fehler... cin.clear(); cin.ignore(numeric_limits<streamsize>::max(),'\n'); } cout << age; }
-
Was ist denn daran so schlimm?
-
Wozu liest du etwas aus einem Stream in einen String ein, stopfst es in einen Stringstream und führst dann auf dem Stringstream Operationen durch, anstatt das einfach auf dem ersten Stream zu machen?
-
Achso stimmt da habt ihr recht, ich hab wirklich etwas zu kompliziert gedacht
Ich dachte nur es bezog sich aufs for_each, weil das im quote stand und das hat mich ein wenig verwirrt. Oder ist da auch was suboptimal?^^
-
SeppJ schrieb:
Wozu liest du etwas aus einem Stream in einen String ein, stopfst es in einen Stringstream und führst dann auf dem Stringstream Operationen durch, anstatt das einfach auf dem ersten Stream zu machen?
Weil es so eigentlich deutlich einfacher ist, bei fehlerhaften Eingaben den Stream von Müll freizuhalten? Allerdings ist es da besser, die Eingabe über getline zu machen.