Registrierkassen Problem



  • Hallo,

    habe wie solls auch anders sein schon ein problem mit folgendem programm:

    #include <iostream>
    using namespace std;
    
    int main(){
    	int Zahl,ZehnEuro,FuenfEuro,ZweiEuro,EinEuro,RestZehnEuro,RestFuenfEuro,RestZweiEuro;
    
    	cout<<"Wieviel Euro sollen gewechselt werden?"<<endl;
    	cin>>Zahl;
    	ZehnEuro=Zahl/10;
    	RestZehnEuro=Zahl%10;
    	if (RestZehnEuro>=5){ 
    		FuenfEuro=RestZehnEuro/5;
    		RestFuenfEuro=RestZehnEuro%5;
    	}
    	if (RestFuenfEuro>=2){ 
    		ZweiEuro=RestFuenfEuro/2;
    		RestZweiEuro=RestFuenfEuro%2;
    	}
    	if (RestZweiEuro>=1){
    		EinEuro=RestZweiEuro/1;
    	}
    
    	cout<<ZehnEuro<<" Schein(e)zu 10 Euro"<<endl;
    	cout<<FuenfEuro<<" Schein(e)zu 5 Euro"<<endl;
    	cout<<ZweiEuro<<" Muenze(n) 2 Euro"<<endl;
    	cout<<EinEuro<<" Muenze(n)zu 1 Euro"<<endl;
    	return 0;
    }
    

    Er sagt mir das die "Rest" Werte nicht deklariert sind. Weiterhin möchte ich das er das geld wechselt doch irgendwo ist dort ein fehler. kann mir da jemand weiterhelfen? Ist mein Programm zu umständlich?

    Achso und das die Reste nicht deklariert sind sagt er mir auch erst wenn ich in der konsole eine "Zahl" eingebe die er wechseln soll. Vielleicht sollte man das auch erwähnen.

    Danke



  • Wozu dauernd if? Muß nicht immer alles berechnet werden?



  • Geh mal schrittweise mit dem Debugger durch, dann siehst du das Problem. Du verwendest Variablen, die (durch deine if-Verzweigungen) nicht initialisiert wurden.



  • Das war so mein Gedanke das es so funktionieren könnte.

    Also Wenn z.B etwas größer ist als 10 teile es erst durch 10, und wenn der Rest vom rest des quotienten größer ist als 5 teile durch 5 usw.



  • piwi17m schrieb:

    Das war so mein Gedanke das es so funktionieren könnte.

    Also Wenn z.B etwas größer ist als 10 teile es erst durch 10, und wenn der Rest vom rest des quotienten größer ist als 5 teile durch 5 usw.

    aber wenn der Rest vom rest des quotienten nicht größer ist als 5 teile auch durch 5 usw.



  • Ok er sagt mir das die ganzen variablen nicht initialisiert wurden. Das heißt für mich das ich denen keinen int/float/double gegeben habe, aber das habe ich doch ganz oben.

    Wie initialisier ich das denn alles?



  • piwi17m schrieb:

    Ok er sagt mir das die ganzen variablen nicht initialisiert wurden. Das heißt für mich das ich denen keinen int/float/double gegeben habe, aber das habe ich doch ganz oben.

    Wie initialisier ich das denn alles?

    Eine reine Variablendeklaration:

    int i;
    

    Eine Deklaration mit Initialisierung:

    int i=0;
    


  • Habe es jetzt so gelöst

    #include <iostream>
    using namespace std;
    
    int main(){
    	int Zahl,ZehnEuro,FuenfEuro,ZweiEuro,EinEuro,RestZehnEuro,RestFuenfEuro,RestZweiEuro;
    
    	cout<<"Wieviel Euro sollen gewechselt werden?"<<endl;
    	cin>>Zahl;
    		ZehnEuro=Zahl/10;
    		RestZehnEuro=Zahl%10;
    		FuenfEuro=RestZehnEuro/5;
    		RestFuenfEuro=RestZehnEuro%5;
    		ZweiEuro=RestFuenfEuro/2;
    		RestZweiEuro=RestFuenfEuro%2;
    		EinEuro=RestZweiEuro/1;
    
    	cout<<ZehnEuro<<" Schein(e)zu 10 Euro"<<endl;
    	cout<<FuenfEuro<<" Schein(e)zu 5 Euro"<<endl;
    	cout<<ZweiEuro<<" Muenze(n) 2 Euro"<<endl;
    	cout<<EinEuro<<" Muenze(n)zu 1 Euro"<<endl;
    	return 0;
    }
    

    Funktioniert.

    @ Matze danke jetzt weiß ich auch was initialisieren ist. Einfach einen Wert zuweisen. danke

    -closed-



  • arrays kennst du noch nicht?


Anmelden zum Antworten