String auf Alphanumerik untersuchen



  • Hallo zuerstmal.

    Habe folgende Aufgabe:

    Ein Programm liest nach der Eingabeauorderung von der Konsole eine Zeichenfolge ein und speichert sie
    in einer Variablen vom Typ string. Es wird geprüft, ob die Eingabe nur aus Ziern und Punkten besteht,
    und ob midestens eine Zier vorhanden ist.
    Wenn das nicht der Fall ist, wird das Programm nach einer geeigneten Meldung beendet.
    Falls die Prüfung erfolgreich ist, werden aus dem Eingabestring alle Punkte entfernt, so dass nur noch
    Ziern enthalten sind. Diese Ziernfolge wird mit Hilfe eines stringstream-Objekts in eine Zahl (long)
    umgewandelt und mit einer passenden Meldung an der Konsole ausgegeben.
    

    Ich habe eine anfangslösung. Damit wollte ich erstmal schauen, ob die Überprüfung funktioniert. Leider funktioniert sie nicht. Es wird immer "failed" ausgegeben. Ich weiß, dass das cout dann außerhalb der for-Schleife stehen muss, aber dazu kam ich noch nicht...

    hier ist mein Code: (Wo ist der Fehler?)

    int main()
    {
    string Eingabe;
    cout << "Eingabe String: " << endl;
    cin >> Eingabe;
    
    for(int i= 0; i< Eingabe.size(); i++)
    {
    	if(Eingabe[i] == 46 && (Eingabe[i] > 47 || Eingabe[i] < 58) && (Eingabe[i] >64 && Eingabe[i] <123))
    	{
    		cout << "Passt" << endl;
    	}
    	else
    	{
    		cout << "failed" << endl;
    	}
    }
    }
    


  • if(Eingabe[i] == 46 &&
    

    Guck dir nochmal deine Logik-Verknüpfungen an. Sicher, dass es UND sein soll?



  • Wieso schreibst nicht sowas wie

    if ( Eingabe[i] == ' ' || Eingabe[i] == '\t' ... )
    

    ich kenne zwar ASCII und hab auch keine Angst davor, aber die Zahlenwerte hab ich nicht im Kopf.....



  • Ouh man Leute *racepalm*... wie peinlich 😃

    Sorry, das thema is geklärt 🙂



  • Hallo.

    oenone schrieb:

    Guck dir nochmal deine Logik-Verknüpfungen an. Sicher, dass es UND sein soll?

    Und danach ein Oder kommen soll, und danach wieder ein Und?

    if(Eingabe[i] == 46 && (Eingabe[i] > 47 || Eingabe[i] < 58) && (Eingabe[i] >64 && Eingabe[i] <123))

    3 von 4 falsch, spiele bloß kein Lotto.
    Am besten beim nächsten mal nochmals selbst konzentriert überprüfen. 😉
    MFG John.


Anmelden zum Antworten