Else if Bedingung wird ignoriert?
Ich habe in meinem Programm (c++) eine if Bedingung und dabei noch else if Bedingungen. Die erste If Bedingung ist nur true, wenn alle 3 Angaben gleich sind. Die zweite else if Bedingung ist immer true und deswegen werden die anderen else if Bedingungen „ignoriert“. Mit einzelnen if Statements habe ich es auch schon probiert aber dann kriege ich 3 verschiedene Ausgaben.
cout <<„Geben Sie die erste Ziffer ein“;
cin >> Z1;
cout << endl;
cout <<„Geben Sie die zweite Ziffer ein“;
cin >> Z2;
cout << endl;
cout <<„Geben Sie die dritte Ziffer ein“;
cin >> Y1;
cout << endl;
cout <<„Geben Sie die vierte Ziffer ein“;
cin >> Y2;
cout << endl;
if ((Z1 == Z2)& (Y1 == Y2))
{
cout << “Die Werte sind identisch“<<endl;
}
else if (Z1 > Z2)
{
cout << “Der erste Z-Wert ist größer“<<endl;
}
else if (Z2 > Z1)
{
cout << “Der zweite Z-Wert ist größer“<<endl;
}
else if (Y1 > Y2)
{
cout << “Der erste Y-Wert ist größer“<<endl;
}
else if (Y2 > Y1)
{
cout << “Der zweite Y-Wert ist größer“<<endl;
}
…
Weil die zweite Bedingung meistens erfüllt ist werden die anderen nicht ausgeführt. Wie kann ich das lösen?
Ps: Bin ein Anfänger wie man sieht
2 Antworten
Ändere die Struktur doch in diese:
if (Z1 == Z2 && Y1 == Y2)
{
// ...
else {
if (Z1 > Z2) {
// ...
}
else {
// ...
}
if (Y1 > Y2) {
// ...
}
else {
// ...
}
}
Ich würde bei der ersten Bedingung übrigens empfehlen, eine logische Verknüpfung (&&) zu verwenden. Wenn bereits der erste Vergleich nicht wahr ist, muss der zweite Vergleich nicht noch ausgewertet werden, sondern das Programm kann sofort in den else-Zweig springen.
Mache keine else if Abfrage, arbeit nur mit if.
Dann werden alle Zustände der Reihe nach abgefragt und für jeden Zustand eine Meldung ausgegeben.