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;