Hilfe bei taschenrechner schleife



  • Hallo liebe forumer ich bitte um hilfe bei diesem Programm:

    #include<iostream>
    using namespace std;
    
    int main()
    {
    	cout<<"Wähle zwischen den rechenarten\n"
    	    <<"1 für addition\n 2 für substraktion\n 3 für multiplikation\n 4 für division\n"
    		<<"wenn du im program für zahl1 = 0 eingibst schließt sich das Programm";
    	int rechenar;
    	cin>>rechenar;
    	while(rechenar!=0){
    
    	if(rechenar == 1){				   //programm zum wählen der rechenart und gleichzeitiges ausführen leider noch nicht fertig
    			float  zahl1,zahl2;
    	cout<<"zahl1:";
    	cin>>zahl1;
    	if(zahl1==0)
    	{ cout<<"kein anschluss";
    		cin.sync();
    		cin.get();
    		return 0;
    	}
    	cout<<"zahl2";
    	cin>>zahl2;
    	cout<<zahl1+zahl2<<endl;
    
    	}
    	else if(rechenar==2){
    		float zahl1,zahl2;
    	cout<<"zahl1:";
    	cin>>zahl1;
    	if(zahl1==0)
    	{ cout<<"kein anschluss";
    		cin.sync();
    		cin.get();
    		return 0;
    	}
    	cout<<"zahl2";
    	cin>>zahl2;
    	cout<<zahl1-zahl2<<endl;
    
    	}
    	else if (rechenar==3){
    			float zahl1,zahl2;
    
    	cout<<"zahl1:";
    	cin>>zahl1;
    	if(zahl1==0)
    	{ cout<<"kein anschluss";
    		cin.sync();
    		cin.get();
    		return 0;
    	}
    	cout<<"zahl2";
    	cin>>zahl2;
    	cout<<zahl1 * zahl2<<endl;
    
    	}
    
    	else if (rechenar ==4)
    	{
    		float zahl1,zahl2;
    	cout<<"zahl1:";
    	cin>>zahl1;
    	if(zahl1==0)
    	{ cout<<"kein anschluss";
    		cin.sync();
    		cin.get();
    		return 0;
    	}
    
    	cout<<"zahl2";
    	cin>>zahl2;
    
    	cout<<zahl1  / zahl2<<endl;
    
    	}
    
    	else{
    
    	 	 cin.sync();
    		 cin.get();
    		 return 0;}
    
    	}
    	}
    

    Ich möchte eine schleife einbauen das jedesmal wenn etwas ausgerechnet wird, die Möglichkeit besteht die Rechenart wieder zu wechseln

    Danke schon mal im voraus

    P.S:

    Ich programmiere erst seit 2 Tagen also entschuldigt die unordentlichkeit:



  • Nächstes mal:

    • Bitte den Code in Code-Tags einschließen (Code markieren und auf den Knopf 'C++' klicken).
    • Den Code formatieren, wenn nicht formatiert (kann ich ohne Code-Tags nicht erkennen).

    Zu deinem Code: Du hast doch sicher ein Grundlagenbuch? Falls nein, verweise ich dich hiermit auf die Linkliste, die u.a. auch einen Teil für Bücher hat.

    Ich würde pauschal sagen, dass nach zwei Tagen Programmierung ein Taschenrechner (deutlich) zu hoch gegriffen ist. Versuche dich erst mit etwas einfacherem, wobei du die Grundlagen lernst. Dein Taschenrechner ist ja noch ziemlich unordentlich.

    Kennst du eigentlich überhaupt Schleifen im Allgemeinen? Solche Dinge werden immer in Grundlagenbüchern behandelt (s.o.).



  • Hier nochmal dein Code - aufgeräumt, formatiert, in Code-Tags und ein wenig schöner gemacht.

    #include<iostream>
    #include <limits>
    using namespace std;
    
    int main()
    {
    	cout << "Wähle zwischen den rechenarten\n"
    	     << "1 für addition\n 2 für substraktion\n 3 für multiplikation\n 4 für division\n"
    	     << "wenn du im program für zahl1 = 0 eingibst schließt sich das Programm";
    
    	int rechenar;
    	cin >> rechenar;
    
    	if( rechenar )
    		for(;;) // Schleifen der Form for(;;) oder while(true) wiederholen ihren Rumpf bis sie mittels 
    		        // break abgebrochen werden (das ist zumindest die direkteste Variant sie abzubrechen)
    		{
    			float zahl1,
    				  zahl2;
    
    			cout << "zahl1:";
    			cin >> zahl1;
    
    			if( zahl1 == 0 )
    			{
    				cout << "Kein anschluss\n"; // Zeilenumbruch hinzugefügt
    				break; // Mit diesem Schlüsselwort unterbrichst du Schleifen sofort.
    			}
    
    			cout << "zahl2";
    			cin >> zahl2;
    
    			if( std::cin.fail() ) // Wenn die Eingabe Fehler enthält..
    			{
    				std::cerr << "Eingabe-Fehler!\n";
    				break; // .. Programm abbrechen
    			}
    
    			if( rechenar == 1 )
    				cout << zahl1 + zahl2 << '\n'; // '\n' ist ein Zeilenumbruch. endl ist eine Hilfsfunktion, die zwar auch einen Zeilenumbruch erzeugt, aber dazu noch etwas anderes tut.
    
    			else if( rechenar == 2 )
    				cout << zahl1 - zahl2 << '\n';
    
    			else if ( rechenar == 3 )
    				cout << zahl1* zahl2 << '\n';
    
    			else if ( rechenar == 4 )
    				if( zahl2 == 0 )
    					std::cout << "Divisor ist 0!\n";
    				else
    					cout << zahl1 / zahl2 << '\n';
    		}
    
    	cin.sync(); // Das Verhindern der Schließung der Konsole kannst du ans Ende der main() auslagern
    	cin.get();
    } // return-Statement in main() unnötig (Ausnahme!)
    

    Ungetestet!


Anmelden zum Antworten