Keine Ausgabe bei while Schleife



  • Hallo liebe Gemeinde.

    Ich habe folgenden Quellcode programmiert:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	double e=0.123456789;
    
    	while (e!=0.123456789)
    	{
    		int first_Number, second_Number;
    		cout << "Bitte eine grosse Zahl eingeben: ";
    		cin >> first_Number;
    		cout << "\nBitte eine kleinere Zahl eingeben: ";
    		cin >> second_Number;
    
    		if (first_Number > second_Number)
    		cout << "\nDanke!\n";
    		else
    		cout << "\nDie zweite Zahl ist groesser!";
    
    		return 0;
    	}
    }
    

    Beim Debuggen öffnet sich zwar ein Fenster, aber es sthet nur "Drücken Sie eine beliebige Taste... " dorten.

    Hier ein Link mit Bild:

    http://www.elektronik-kompendium.de/forum/forum_entry.php?id=165203&page=0&order=time&descasc=DESC&category=all

    Was habe ich falsch gemacht??

    Vielen Dank für die Antworten im Voraus.

    Gruß

    Max



  • double e=0.123456789;
    while (e!=0.123456789)
    {
    //
    }
    

    Wie lange gilt denn e!=0.123456789? 😉



  • Hallo liebe Gemeinde.

    Ersteinmal die erste Fehlerbeschreibung:

    Ich habe das "return 0;" falsch gesetzt und habe es schon richtig gestellt.

    Dennoch bleibt die Meldung "Drücken Sie eine beliebige Taste..."

    (e!=0.123456789) soll solange gelten, bis eben die Zahlenkombination 0.123456789 nicht gedrückt ist.

    Anscheinend habe ich einen Denkfehler...

    Sollte ich eine do {...} while (e!=0.123456789) verwenden??

    Gruß



  • silent_max schrieb:

    double e=0.123456789;
    	
    	while (e!=0.123456789)
    

    Max

    Was willst du du damit machen?



  • silent_max schrieb:

    Ich habe das "return 0;" falsch gesetzt und habe es schon richtig gestellt.

    Das "return 0;" darfst du in der main()-Funktion auch weglassen



  • Die Schleife soll solange laufen, bis eben 0.123456789 gedrückt wird...

    Mehr will ich nicht machen.



  • Wenn du willst, dass was gedrückt wird, musst du was einlesen!
    std::cin>>e;



  • lol, du sagst e = x und fragst dann "hey, ist e != x" und wunderst dich, dass da false bei rauskommt? 😃



  • do
    	{
    		if (first_Number > second_Number)
    		cout << "\nDanke!\n";
    		else
    		cout << "\nDie zweite Zahl ist groesser!";
    	}
    	while(first_Number!=0.123);
    

    Wenn ich das programmiere, dann kommt die ganze Zeit nur das selbe...

    Ich komme einfach nicht darauf, wie es richtig gehört.



  • double e=0.123456789;
    
    std::cin>>e;
    while(e!=0.123456789){
    
    //mache irgenetwas
    }
    


  • Ursprünglicher Code:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    	int first_Number, second_Number;
    	cout << "Bitte eine grosse Zahl eingeben: ";
    	cin  >> first_Number;
    	cout << "nBitte eine kleinere Zahl eingeben: ";
    	cin  >> second_Number;
    
    	if (first_Number > second_Number)
    	cout << "nDanke!n";
    	else
    	cout << "nDie zweite Zahl ist groesser!";
    
    	return 0;
    }
    

    Dazu habe ich dann folgendes programmiert:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    	int first_Number, second_Number;
    	cout << "Bitte eine grosse Zahl eingeben: ";
    	cin  >> first_Number;
    	cout << "nBitte eine kleinere Zahl eingeben: ";
    	cin  >> second_Number;
    	cout << "Zahl fuer e eingeben: " ;
    	double e;
    	cin  >> e;
    
    	while(e!=0.123456789)
    	{
    		if (first_Number > second_Number)
    		cout << "nDanke!n";
    		else
    		cout << "nDie zweite Zahl ist groesser!";
    	}
    
    	return 0;
    }
    

    Wenn ich aber jetzt beispielsweise

    ->für first_Number 5000 und für secon_Number 2500 eingebe, dann kommt endlos "Danke!".

    ->für first_Number 2500 und für second_Number 5000 eingeben, dann kommt endlos "Die zweite Zahl ist groesser!"

    Und das will ich auch nicht.

    Ich hätte nicht gedacht, dass eine While-Schleife so kompliziert ist.



  • silent_max schrieb:

    Ich hätte nicht gedacht, dass eine While-Schleife so kompliziert ist.

    Sag mal trollst du? Wird jedenfalls immer witziger. 😃

    e = x + 1
    solange (e != x) { mache irgendwas, was e nicht verändert. }
    

    Hm.. was passiert da wohl. Mal ganz scharf nachdenken jetzt.



  • ist klar!
    wenn du einmal e eingegeben hast, und du sie korekt eingiebst, läuft die schleife!

    Du müsstest die Zahlen in der Schleife einlesen!
    so:

    double e=0.123456789;
    
    cin>>e;
    
    while(e!=0.123456789){
    
    cin>>große_Zahl>>kleine_Zahl;
    
    if(große_Zahl>kleine_Zahl){
       cout<<"Danke"<<endl;
       return 0;
    }
    else
       cout<<"Die zweite Zahl ist groesser"<<endl;
    }
    


  • silent_max schrieb:

    Ich hätte nicht gedacht, dass eine While-Schleife so kompliziert ist.

    Was willst du mit der while-Schleife denn überhaupt bezwecken? So, wie du sie verwendest, macht das auch keinen Sinn.



  • Ok, ich versuch es Dir zu erklären.

    Der ursprüngliche Code war wie folgt:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
        int first_Number, second_Number;
        cout << "Bitte eine grosse Zahl eingeben: ";
        cin  >> first_Number;
        cout << "nBitte eine kleinere Zahl eingeben: ";
        cin  >> second_Number;
    
        if (first_Number > second_Number)
        cout << "nDanke!n";
        else
        cout << "nDie zweite Zahl ist groesser!";
    
        return 0;
    }
    

    Da ich keine Lust gehabt habe, jedes Mal auf "Starten ohne Debuggen" klicken zu müssen, wenn ich zwei Zahlen miteinander vergleichen möchte, ist folgender Quellcode entwickelt worden:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	double quiet=0.123456789;
    
    	while(quiet)
    	{
    		double first_Number, second_Number;
    		cout << "Zwei Zahlen bitte!"<<endl; 
    		cout << "Bitte eine grosse Zahl eingeben: "<<endl;
    		cin  >> first_Number;
    		cout << "\nBitte eine kleinere Zahl eingeben: "<<endl;
    		cin  >> second_Number;
    
    		if (first_Number > second_Number)
    			cout << "\nDanke!\n";
    		else
    			cout << "\nDie zweite Zahl ist groesser!\n";		
    	}
    	return 0;
    }
    

    Der Quellcode an sich funktioniert.

    Bloß wenn ich jetzt für beide Eingaben 0.123456789 eingebe, kommt eine Endlosschleife. Meinerseits war aber gewünscht, dass, wenn 0.123456789 eingegeben wird, die Schleife beendet und das Fenster geschlossen wird.

    Ich hoffe, dass ich es rüberbringen konnte.

    Wie würdest Du es machen?

    Gruß

    Edit:
    Ich merke gerade, dass das ja nicht funktionieren kann und dass es stimmt, dass eine While-Schleife dafür sinnlos ist.

    Aber wie würdet ihr es machen? Ich bin für Vorschläge offen...


  • Mod

    cout << "Bitte Zahlenpaare eingeben, irgendwas anderes eingeben für Ende:\n";
    for (int erste, zweite; cin >> erste >> zweite; ;)
     if (erste > zweite)
      cout << "Die erste Zahl ist größer als die zweite Zahl.\n";
     else if (erste < zweite)
      cout << "Die zweite Zahl ist größer als die erste Zahl.\n";
     else
      cout << "Beide Zahlen sind gleich groß.\n";
    


  • Semikolon zu viel.



  • 314159265358979 schrieb:

    Semikolon zu viel.

    Und wo?
    EDIT: In der for-Schleife. Jetzt seh ich es auch.


Anmelden zum Antworten