Schleife wird nicht beendet
-
Hey,
ich habe ein Problem bei mehreren Bedingungen in einer Schleife.
Die Schleife wird auch fortgesetzt, wenn man die Bedingung erfüllt.
Die Bedingung soll sein, dass die Eingabe entweder 1, 2, 3 oder 4 ist.
Ich benutzte Dev-C++ als Editor und Compiler.
Ich würde mich über Hilfe freuen.mfg Rayzn
#include <iostream> #include <string> #include <cmath> #include <sstream> #include <stdio.h> using namespace std; int main() { int system; cout<<"Text\n"; do { cout<<"Text\n\n"; cout<<"Text\n"; cout<<"Text\n"; cout<<"Text\n"; cout<<"Text\n\n"; cin>>system; } while ((system!=1) || (system!=2) || (system!=3) || (system!=4)); if (system==1) {Anweisungen} if (system==2) {Anweisungen} if (system==3) {Anweisungen} if (system==4) {Anweisungen} //Damit das Programm nicht beendet wird. int loop=1; while (loop==1) {} }
-
Nenn mal einen Wert für system, der gleichzeitig gleich 1, 2, 3 und 4 ist
. Denn "do...while" heißt "mach...solange wie", nicht "mach...bis". Hier soll also die Schleife ausgeführt werden, solange system nicht gleich allen geprüften Werten ist.
-
#include <iostream>
#include <string>
#include <cmath>
#include <sstream>
#include <stdio.h>
using namespace std;
int main()
{
int system;
cout<<"Text\n";
do
{
cout<<"Text\n\n";
cout<<"Text\n";
cout<<"Text\n";
cout<<"Text\n";
cout<<"Text\n\n";
cin>>system;
}
while ((system!=1) && (system!=2) && (system!=3) && (system!=4)); //deine Bedingung war wohl offensichtlich falsch.
//Wenn system==1 ist, dann ist zwar das erste falsch, das zweite aber wahr (und damit alles) wenn system==2 ist, ist schon das erste wahr.if (system==1)
{Anweisungen}if (system==2)
{Anweisungen}if (system==3)
{Anweisungen}if (system==4)
{Anweisungen}//Damit das Programm nicht beendet wird.
int loop=1;
while (loop==1) {}
}
-
Vielen Dank euch beiden.
Ich hätte noch eine Frage:
Das war ja ein Logikfehler.
Sollte das von Anfang an sitzen oder ist es normal, wenn man als Anfänger solche Fehler macht.
-
Rayzn schrieb:
Vielen Dank euch beiden.
Ich hätte noch eine Frage:
Das war ja ein Logikfehler.
Sollte das von Anfang an sitzen oder ist es normal, wenn man als Anfänger solche Fehler macht.Ja, es ist normal. Alle haben anfangs Fehler gemacht. Wenn man aber gleich zur richtigen Lektüre (d.h. einem guten Buch) greift, kommt man wesentlich schneller und sicherer voran.
Übrigens: für die vielen if-Abfragen gibt es die switch-case-Anweisung.
-
Sollten doch mal mehr Anweisungen dazukommen, wäre die Schleifenbedingung
do { // ... } while (system < 1 || system > 4);wohl sinnvoller (denn dann kann 4 einfach durch eine andere Zahl ersetzt werden
