C++ Programm stürzt immer ab



  • Hey,
    ich habe ein Programm gemacht, welches mir immer abstürzt, wenn es etwas berechnen sollte.
    Dies ist der Code:

    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    int main()
    {
    	const int C    = 261;
    	const int Cis  = 277;
    	const int D    = 293;
    	const int Dis  = 311;
    	const int E    = 329;
    	const int F    = 349;
    	const int Fis  = 369;
    	const int G    = 391;
    	const int Gis  = 415;
    	const int A    = 440;
    	const int Ais  = 466;
    	const int H    = 493;
    	const int Takt = 2000;
    
    	int Prozent_Schnaps;
    	int Prozent_Schnaps_verduennt;
    	int Liter_Schnaps;
    	int Ergebnis;
    
    	cout << "*******************************************" << endl;
    	cout << "ACOL - Berechner zur Verdünnung von Alkohol" << endl;
    	cout << "Programm von Wolfgang Steidl" << endl;
    	cout << "*******************************************" << endl;
    	cout << "Wie viel Liter hat der Schnaps am Anfang?" << endl;
    	cin >> Liter_Schnaps;
    	if (Liter_Schnaps = 0)
    	{
    		Beep(C * 2, Takt / 2);
    		Beep(D * 2, Takt / 2);
    		Beep(E * 2, Takt / 2);
    		Beep(F * 2, Takt / 2);
    		Beep(G * 2, Takt / 2);
    		cout << "Weniger als 0 Liter geht nicht ;)" << endl;
    	}
    
    	cout << "Wie viel Prozent hat der rohe Schnaps?" << endl;
    	cin >> Prozent_Schnaps;
    	if (Prozent_Schnaps = 0)
    	{
    		Beep(C * 2, Takt / 2);
    		Beep(D * 2, Takt / 2);
    		Beep(E * 2, Takt / 2);
    		Beep(F * 2, Takt / 2);
    		Beep(G * 2, Takt / 2);
    		cout << "Weniger als 0 Prozent geht nicht ;)" << endl;
    	}
    	cout << "Wie viel Prozent soll der Schnaps am Schluss haben?" << endl;
    	cin >> Prozent_Schnaps_verduennt;
    		if (Prozent_Schnaps = 0)
    	{
    		Beep(C * 2, Takt / 2);
    		Beep(D * 2, Takt / 2);
    		Beep(E * 2, Takt / 2);
    		Beep(F * 2, Takt / 2);
    		Beep(G * 2, Takt / 2);
    		cout << "Weniger als 0 Prozent geht nicht ;)" << endl;
    	}
    	Ergebnis = ((Prozent_Schnaps * Liter_Schnaps) / Prozent_Schnaps_verduennt) - Liter_Schnaps;
    	cout << Ergebnis;
    }
    

    Dabei geht es um ein Programm, welches ausrechnen sollte, mit wie viel Wasser man verdünnen soll, xy Prozentigen Schnaps zu bekommen.

    Ich hoffe, ihr könnt mir helfen 😉



  • in den if-Bedingungen musst du ==0 schreiben sont wird es als zuweisung gewertet. Und deswegen stürzt dein Programm auch ab, weil eine Division durch 0 eben nicht erlaubt ist. Das ist übrigens ein gern gemachter Fehler.



  • Das ist eine Zuweisung

    if (Prozent_Schnaps = 0)
    

    es müsste wohl

    if (Prozent_Schnaps == 0)
    

    heißen



  • hey,
    danke für die antwort, das mit der If-Funktion funktioniert, und die Fehler werden abgefangen 😉
    doch wenn das Programm anfängt zu rechnen (egal welche rechnung) stützt es trotzdem ab. Auf Linux funktioniert es, aber auf Windows nicht.
    Ich mal jemanden gefragt, was der fehler sein könnte, und ich bekam als Antwort, dass ich im Programm einen Fehler habe, welcher auf Linux nichts verursacht aber auf Windows vielleicht nicht gut tut.
    Findet ihr da etwas, was falsch ist?
    mfg



  • penguin-of-doom schrieb:

    ...Auf Linux funktioniert es, aber auf Windows nicht....

    Das kann ich kaum glauben 😉

    penguin-of-doom schrieb:

    ...Findet ihr da etwas, was falsch ist?...

    Z.B. darf man nicht durch 0 teilen. Die Stelle findest du sicher selbst.



  • Also bei mir stürzt das Programm nicht mehr ab wenn ich die if-Bedingung ändere!



  • Glaube eher, dass sich die Konsole bei ihm schließt und er dies als Absturz ansieht.

    Hänge das mal am Ende ran.

    std::cin.clear();
        std::cin.ignore(std::cin.rdbuf()->in_avail());
        std::cin.get();
    


  • Hinter die cout << "Weniger als 0 Prozent geht nicht ;)" << endl; Anweisungen sollte auch noch jeweils ein return, sonst teilt man trotzdem durch 0, auch wenn ne tolle Fehlermeldung kommt.


Log in to reply