Wörter einlesen und ausgeben

CMTaker

Banned
Registriert
Okt. 2010
Beiträge
14
Heb ein Probleme mit meinen Programm, es soll Wörter in einer Schleife einlesen und wieder ausgeben und Wörter die auf disliked sind sollen mit einen XXX ausgegeben werden. Nun das geht gut aber wenn ich das Wort eingebe das im string disliked ist dann wird XXX und auch das Wort ausgegeben obwohl nur XXX ausgeben werden soll. Wo ist der Fehler? Danke schon im Voraus.

Code:
int main()
{
    string wort;
    string disliked = "Brokkoli";
    string disliked2 = "brokkoli";
    string disliked3 = "Apfel";
    string disliked4 = "apfel";
    cout<<"Bitte geben Sie ein Wort ein!\n";
    while(cin>>wort){
	  if(disliked == wort || disliked2 == wort || disliked3 == wort || disliked4 == wort){
            cout<<"XXX\n";
            };
	    if(disliked != wort || disliked2 != wort || disliked3 != wort || disliked4 != wort){
	    cout<<"Das eingegeben wort ist: "<<wort<<"\n";
	    };
	cout<<"Und noch ein Wort! Fuer beenden die Taste STRG + Z und dann ~ druecken!\n";
	};
    keep_window_open("~");
    return 0;
}
 
Zuletzt bearbeitet:
Ich weiß auch gerade nicht warum die Fallunterscheidung bei Gleichheit eintrifft und die bei Ungleichheit aber warum stellst du das 2. if nicht einfach in den else-Zweig der ersten Fallunterscheidung, dann kann schon mal nicht beides ausgegeben werden.
Quasi:
if (wort == dislike || .................){
ausgabe;
}else{
ausgabe2;
}

Edit: Ich hab den Fehler, der ist eigentlich ganz einfach.
Wenn du z.B. Brokkoli ein gibst,dann trifft das erste disliked in der 1. Fallunterscheidung zu und das XXX wird ausgegeben.
Soweit so gut.
Aber bei der 2. Fallunterscheidung überprüft er dann ob das wort ungleich dem disliked ist, für den Fall mit dem Brokkoli ist das ein false, weil Brokkoli != Brokkoli überprüft wird.
Dann geht er aber zum oder und überprüft ob Brokkoli != brokkoli, das ist true und damit wird ausgegeben.
 
Zuletzt bearbeitet:
if(disliked != wort || disliked2 != wort || disliked3 != wort || disliked4 != wort)

Du musst die || durch && ersetzen. Es darf absolut gar nichts "disliked" sein, denn so sind stets mindestens 3 "true" dadrin und das Wort wird trotzdem noch gezeigt.
 
Mit else habe ich versucht doch dann bekomme ich von Visual Studio 2010 Compiler eine Fehlermeldung das sagt else ohne das zugehöriges if, wenn ich dann else if schreibe wieder das gleiche.
Das Probleme ist gelöst.

Danke für Eure Hilfe, ihr sein echt super. Danke nochmals.
 
Zuletzt bearbeitet:
Bei der Verwendung von else muss bei Visual wohl auch ein then eingebaut werden.
~so:
if (ausdruck) then{
codeblock für den true-fall;
}
else{
codeblock für den false-fall;
}

Ich bin da kein Experte, die Syntax kann man mit Sicherheit auch googlen.
 
Wenn ich das then eingebe sagt es das es ein nicht deklarierter Bezeichner ist.
 
dein 2. if bedingung ist falsch ! Du musst dort anstelle von logischen oder ein und verwenden oder gleich ein else machen....
 
Visual Studio 2010 meckert wegen dem else, oder sollte ich ein anderes IDE nutzen wie Dev C++? Oder einen anderen Compiler wie dem Intel C++ Compiler?

Das Probleme ist gelöst. Habe die || durch && ersetzen und jetzt geht das Programm so wie es sein sollte.

Werde mal Dev C++ versuchen.
 
Zuletzt bearbeitet:
Zurück
Oben