Frage bezüglich if/else Anweisung in einer Aufgabe



  • Hallo, ich komme leider mit meinem Code nicht weiter bzw. finde den Fehler nicht. Hier die Aufgabe:
    Schreiben Sie ein Programm, das ein Alphazeichen einliest. Ein Alphazeichen ist ein Zeichen aus der Menge {a..z, A..Z }. Handelt es sich um kein Alphazeichen, soll eine Fehlermeldung ausgegeben werden. Liegt ein Alphazeichen vor, wird angezeigt, ob es sich um einen Vokal, ein Element der Menge {a, e, i, o, u, A, E, I, O, U}, oder einen Konsonanten (Menge der Alphazeichen vermindert um die Menge der Vokale) handelt.

    Und hier was ich bis jetzt geschrieben habe: (P.S.:bin Anfänger und nur mit der <iostream> bibliothek vertraut und noch nicht weiter als mit if/else Anweisungen)

    #include <iostream>
    using namespace std;

    int main() {

    char a;

    cout << "Zeichen: ";
    cin >> a;
    if (a='a','e','i','o','u','A','E','I','O','U') {
    cout << "Vokal" << endl;
    }
    else {
    if (a>='b' && a<='z') {
    cout << "Konsonant" << endl;
    }
    else {
    if (a>='B' && a<='Z')
    cout << "Konsonant";
    else
    cout << "Fehler: Es wurde kein Alphazeichen eingegeben" <<endl;
    }
    }

    return 0;
    }

    Wo genau liegen jetzt meine Fehler?



  • swing001 schrieb:

    if (a='a','e','i','o','u','A','E','I','O','U') {

    Die Zeile macht nicht das was Du denkst, was sie macht.



  • Und wie wäre es richtig?



  • Einzelprüfungen mit ||



  • Falsch:

    if (a='a','e'/*,'i'...*/)
    

    C/C++ => nicht alles was ohne Fehler kompiliert ist auch korrekt

    Richtig:

    if (a == 'a' || a == 'e'/* || 'i'...*/)
    

    == nicht = bei Vergleichen -> sonst ist es eine Zuweisung wenn du 'a'=a geschrieben hättest wäre es dir aufgefallen

    mit logischem OR || oder logischem AND && verknuepfen

    nach des ASCII-Tabelle kannst du z.B. sowas schreiben

    if(a >= 'a' && a <= 'z') // dann ist es in [a..z]

    oder auch

    if(a >= 97 && a <= 122) // mit dem Zeichenwert statt dem Zeichen

    usw.



  • char a[2] = { '\0', '\0' };
    cin >> a;
    if(!isalpha(*a))
      cout << "kein Alpha";
    else if(!strpbrk(a, "aeiou") && !strpbrk(a, "AEIOU"))
      cout << "konsonant";
    else cout << "vokal";
    cout << endl;