[gelöst]Abfrage auf Buchstaben ?!
-
Scheinbar weiss niemand, was jetzt das konkrete Problem ist.
meinhana schrieb:
Ich hab ein 10x10 gefülltes Array von A0 - A9 & J0 - J9
Dein Feld sieht so aus?
A0 A1 A2...A9 J0 J1 J2 . . . J9Was genau willst Du hier machen? Bzw.: wie sieht ein richtiger input fuer diese Funktion aus?
z.B. "A0" oder "a7", aber nicht "asdf" oder "a"?int Mensch::getzeile(string input) { if(input[0]<'a') { return input[0] - 'A'; } else { return input[0] - 'a'; } }
-
Sofern du die Nerven dazu hast, schau dir mal <regex> an.
Beispielcode:
if (std::tr1::regex_match(string.c_str(), std::tr1::regex("([0-9]+)")))(ist jetzt nicht der sauberste Code, also bitte verzeihen.. kannst auch auf spezifische Buchstaben usw überprüfen..
-
Also ich verstehe das Problem immer noch nicht, was ist überhaupt gewollt/erwartet und was passiert oO ?!
Das sollte der TE mal klären...
-
Naja, das Problem ist, dass ich eine Koordinate haben will, also "A0" -> klappt alles, doch wenn ich "a" oder nur "0" eingebe, stürzt das problem ab...
-
Du brauchst etwas in der Art:
void Mensch::getkoord(string text, int* zeile, int* spalte) { string input; cout << text << endl; bool eingabeOkay = true; do { cin >> input; if(input.size() != 2) { eingabeOkay = false; } else { if(input[0] >= 'a' && input[0] <= 'j' && input[1] >= '0' && input[1] <= '9') ; //alles gut else eingabeOkay = false; } }while(!eingabeOkay); *zeile = getzeile(input); *spalte = getspalte(input); }
-
Genauuu

Mal gucken obs klappt ^^
-
geht nicht.
-
wiesooooooooo
ne fehlermeldung des compilers wäre schon bisschen besser als "geht nicht"
-
Der boolsche Wert muss in der Schleife initialisiert werden:
void Mensch::getkoord(string text, int* zeile, int* spalte) { string input; cout << text << endl; bool eingabeOkay; do { eingabeOkay = true; cin >> input; if(input.size() != 2) { eingabeOkay = false; } else { if(input[0] >= 'a' && input[0] <= 'j' && input[1] >= '0' && input[1] <= '9') ; //alles gut else eingabeOkay = false; } }while(!eingabeOkay); *zeile = getzeile(input); *spalte = getspalte(input); }
-
Das mit dem "geht nicht" hab ich nicht geschrieben !
-
Ich denke zwar, dass ich gerade auf dem Schlauch stehe und die Problematik nicht sehe aber ich poste dennoch mal:
bool GetCoord(std::string const& Str, unsigned& X, unsigned& Y) { if(Str.size() != 2) return false; if(!(Str[0] >= 'A' && Str[0] <= 'J' || Str[0] >= 'a' && Str[0] <= 'j')) return false; if(!(Str[1] >= '0' && Str[1] <= '9')) return false; X = Str[0] - (Str[0] >= 'a' ? 'a' : 'A'); Y = Str[1] - '0'; return true; }Und hier das Anwendungsbeispiel:
http://ideone.com/fZvTDh
-
Die Antwort von Belli hat funktioniert! Hab noch ein cout eingefügt und alles klasse

Danke