So als Weihnachtsgeschenk erkläre ich dir deinen Fehler mal ausführlichZitat von Pr1Me
Die Else Abfrage gilt immer nur zur Vorherigen If Abfrage, ich hab beide mal Rot Markiert in deinem Post:
Dies könntest du mit 2 Sachen umgehen. Beide Lösungen biete ich dir jetzt hier mal an:Source:
Anfang:;
if ( rezeichen == "1" )
{
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
}
if ( rezeichen == "2" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
}
if ( rezeichen == "3" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
}
if ( rezeichen == "4" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
}
else
{
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
}
1) Bei der ersten frage ich zuerst ab, ob eine 1 ODER eine 2 ODER eine 3 ODER eine 4 eingegeben wurde. Ist dich nicht der Fall wechselt er zum else, ist dies der Fall, schaut er nun genau hin, was eingegeben wurde.
2) Bei meiner 2ten Möglichkeit gehe ich "besser" bzw. übersichtlicher vor. Ich benutze die switch-case Anwendung. Mit dem Befehl "switch ( Die zu prüfende Variable )" kannst du bestimmen, welche Variable überhaupt abgeprüft wird. Danach kommen in geschweifte Klammern die cases (beliebig viele mögliche Fälle + ein default Fall).Source:
if ( rezeichen == "1" || rezeichen == "2" || rezeichen == "3" || rezeichen == "4")
{
if ( rezeichen == "1" )
{
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
}
if ( rezeichen == "2" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
}
if ( rezeichen == "3" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
}
if ( rezeichen == "4" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
}
}
else
{
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
}
So nun komme ich zu deiner Frage, wie man wieder zum Anfang des Programmes gelangen kann. Auch dazu gibt es zahllose Varianten, aber ich erkläre dir hier jetzt mal die einfache goto-Variante, die für einfache, kleinere Projekte geeignet ist, jedoch nicht für größere und die Variante, mit einer Schleife.Source:
switch (rezeichen)
{
case 1:
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
break;
case 2:
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
break;
case 3:
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
break;
case 4:
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
break;
default:
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
break;
}
1) Goto:
"Name":;
goto "Name";
Mit diesen einfachen Befehlen kann man eigentlich im ganzen Codeblock rumspringen
Ich warne hiervor aber noch einmal, dies ist bei größeren Projekten nicht gut, da man damit jegliche Absicherungen die einen C++ bietet ignoriert!
Source:
Anfang:;
if ( rezeichen == "1" || rezeichen == "2" || rezeichen == "3" || rezeichen == "4")
{
if ( rezeichen == "1" )
{
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
}
if ( rezeichen == "2" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
}
if ( rezeichen == "3" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
}
if ( rezeichen == "4" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
}
}
else
{
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
}
char achegal;
cout << "Wollen sie das ganze nochmal wiederholen? (j/n)" << endl;
cin >> achegal;
if (achegal == 'j') goto Anfang;
2) Schleifen:
Es gibt unterschiedliche Typen von Schleifen, einmal die while(do-while) - Schleife und die for - Schleife. Eine Schleife arbeitet im Prinzip einfach, sie prüft etwas ab, und solange dies nicht eintrifft, fängt sie von vorne an und es passiert etwas ( wenn nichts passiert, würde die Schleife ja immer wieder von vorne Anfangen -> eine Endlosschleife).
Source:
do
{
if ( rezeichen == "1" || rezeichen == "2" || rezeichen == "3" || rezeichen == "4")
{
if ( rezeichen == "1" )
{
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
}
if ( rezeichen == "2" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
}
if ( rezeichen == "3" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
}
if ( rezeichen == "4" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
}
}
else
{
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
}
char Anfang;
cout << "Wollen sie nochmal von Vorne beginnen? (j/n)" << endl;
cin >> Anfang;
} while ( Anfang == 'j')
So jetzt habe ich genug geschrieben. Wenn du diesbezüglich noch was Wissen möchtest, kannst du mich ja anschreiben. Hoffe aber, ich habe es verständlich erklärt
MfG Blood
Added after 35 seconds:
So als Weihnachtsgeschenk erkläre ich dir deinen Fehler mal ausführlichZitat von Pr1Me
Die Else Abfrage gilt immer nur zur Vorherigen If Abfrage, ich hab beide mal Rot Markiert in deinem Post:
Dies könntest du mit 2 Sachen umgehen. Beide Lösungen biete ich dir jetzt hier mal an:Source:
Anfang:;
if ( rezeichen == "1" )
{
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
}
if ( rezeichen == "2" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
}
if ( rezeichen == "3" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
}
if ( rezeichen == "4" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
}
else
{
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
}
1) Bei der ersten frage ich zuerst ab, ob eine 1 ODER eine 2 ODER eine 3 ODER eine 4 eingegeben wurde. Ist dich nicht der Fall wechselt er zum else, ist dies der Fall, schaut er nun genau hin, was eingegeben wurde.
2) Bei meiner 2ten Möglichkeit gehe ich "besser" bzw. übersichtlicher vor. Ich benutze die switch-case Anwendung. Mit dem Befehl "switch ( Die zu prüfende Variable )" kannst du bestimmen, welche Variable überhaupt abgeprüft wird. Danach kommen in geschweifte Klammern die cases (beliebig viele mögliche Fälle + ein default Fall).Source:
if ( rezeichen == "1" || rezeichen == "2" || rezeichen == "3" || rezeichen == "4")
{
if ( rezeichen == "1" )
{
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
}
if ( rezeichen == "2" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
}
if ( rezeichen == "3" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
}
if ( rezeichen == "4" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
}
}
else
{
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
}
So nun komme ich zu deiner Frage, wie man wieder zum Anfang des Programmes gelangen kann. Auch dazu gibt es zahllose Varianten, aber ich erkläre dir hier jetzt mal die einfache goto-Variante, die für einfache, kleinere Projekte geeignet ist, jedoch nicht für größere und die Variante, mit einer Schleife.Source:
switch (rezeichen)
{
case 1:
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
break;
case 2:
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
break;
case 3:
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
break;
case 4:
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
break;
default:
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
break;
}
1) Goto:
"Name":;
goto "Name";
Mit diesen einfachen Befehlen kann man eigentlich im ganzen Codeblock rumspringen
Ich warne hiervor aber noch einmal, dies ist bei größeren Projekten nicht gut, da man damit jegliche Absicherungen die einen C++ bietet ignoriert!
Source:
Anfang:;
if ( rezeichen == "1" || rezeichen == "2" || rezeichen == "3" || rezeichen == "4")
{
if ( rezeichen == "1" )
{
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
}
if ( rezeichen == "2" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
}
if ( rezeichen == "3" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
}
if ( rezeichen == "4" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
}
}
else
{
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
}
char achegal;
cout << "Wollen sie das ganze nochmal wiederholen? (j/n)" << endl;
cin >> achegal;
if (achegal == 'j') goto Anfang;
2) Schleifen:
Es gibt unterschiedliche Typen von Schleifen, einmal die while(do-while) - Schleife und die for - Schleife. Eine Schleife arbeitet im Prinzip einfach, sie prüft etwas ab, und solange dies nicht eintrifft, fängt sie von vorne an und es passiert etwas ( wenn nichts passiert, würde die Schleife ja immer wieder von vorne Anfangen -> eine Endlosschleife).
Source:
do
{
if ( rezeichen == "1" || rezeichen == "2" || rezeichen == "3" || rezeichen == "4")
{
if ( rezeichen == "1" )
{
cout << "Bitte geben Sie Zahl 1 ein: ";
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: ";
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 + zahl2 << endl;
}
if ( rezeichen == "2" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 - zahl2 << endl;
}
if ( rezeichen == "3" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 / zahl2 << endl;
}
if ( rezeichen == "4" )
{
cout << "Bitte geben Sie Zahl 1 ein: " << endl;
cin >> zahl1;
cout << "Bitte gehben Sie Zahl 2 ein: " << endl;
cin >> zahl2;
cout <<"Ergebnis: " << zahl1 * zahl2 << endl;
}
}
else
{
cout << "Bitte tätigen Sie eine korrekte Eingabe" << endl;
}
char Anfang;
cout << "Wollen sie nochmal von Vorne beginnen? (j/n)" << endl;
cin >> Anfang;
} while ( Anfang == 'j')
So jetzt habe ich genug geschrieben. Wenn du diesbezüglich noch was Wissen möchtest, kannst du mich ja anschreiben. Hoffe aber, ich habe es verständlich erklärt
MfG Blood