Klasse und while ???



  • Hallo ich hab meine Zugangsdaten wieder gefunden 🙂 ich war der Samson is Back ^^

    Aber deswegen hab ich net den Thread hier aufgemacht XD

    Mein Taschenrechner funktioniert soweit 🙂

    #include <iostream>
    #include <iomanip> 
    
    using namespace std; 
    
    // Klassendefinition 
    class rechner
    { 
    
    private:
    int wahl,zahl1,zahl2,erg,nochmal;          //deklaration der integer sachen
    
    public: 
    
    // Memberfunktionen
    int calc();
    int add();
    int sub();
    
    }; 
    
    // Definition der Memberfunktionen
    
            int rechner::calc()
            {
            cout<<"(1) Addieren\n";
            cout<<"(2) Subtrahieren\n";
            cout<<"\n";
            cout<<"Nummer waehlen: ";
            cin>>wahl;
            return wahl;
            }
    
    int rechner::add()
    {
    cout<<"\n";
    cout<<"Geben sie die erste Zahl ein: ";
    cin>>zahl1;
    cout<<"Geben sie die zweite Zahl ein: ";
    cin>>zahl2;
    
    erg = zahl1 + zahl2;
    
    cout<<zahl1<<" + "<<zahl2<<" = "<<erg<<"\n";
    cout<<"Wollen sie noch etwas berechnen? 1=Ja , 2=Nein\n";
    cin>>nochmal;
    return 0;
    }
    
            int rechner::sub()
            {
            cout<<"Geben sie die erste Zahl ein: ";
            cin>>zahl1;
            cout<<"Geben sie die zweite Zahl ein: ";
            cin>>zahl2;
    
            erg = zahl1 - zahl2;
    
            cout<<zahl1<<" - "<<zahl2<<" = "<<erg<<"\n";
            cout<<"Wollen sie noch etwas berechnen? 1=Ja , 2=Nein\n";
            cin>>nochmal;
    
            return 0;
            }
    
            // HAUPTPROGRAMM
            int main()
    
            {
    
            rechner r;
    
            int wahl=r.calc();
    
            if (wahl==1)
            {
            r.add();
            }
    
    if(wahl==2)
    {
    r.sub();
    }
    
           system("PAUSE");
            }
    

    nur müsste ich jetzt noch wissen wie ich den tastatur puffer löschen kann das ich auch getchar(); benutzen kann ohne das dass Programm immer wieder sofort zugeht :xmas2: :xmas1:

    Und ich möchte halt das wenn man am ende gefragt wird ob man nochmal etwas berechnen und 1 drückt das der dann wieder zum anfang von dem Programm geht also so das man wieder auswählen kann ob man addieren oder subtrahieren will.

    Meine Frage ist jetzt ob das auch mit

    while
    

    geht und wenn ja wie.

    Habs schon versucht aber irgendwie nicht hinbekommen in einem alten Taschenrechner von mir ohne Klassen und so da kann ich es.

    Hier mal der Source Code von dem alten rechner 😉

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
    int a,d;
    double b,c,e,f;
    
    cout<<"Taschenrechner\n";
    
    do
    {
    cout<<"(1) Addieren          (2) Subtrahieren\n";
    cin>>a;
    
    switch(a)
    
    {
    
    case 1:
    
    cout<<"Geben sie die erste Zahl ein:\n";
    cin>>b;            
    cout<<"Geben sie die zweite Zahl ein:\n";
    cin>>c;
    cout<<"Ergebnis:"<<b+c<<"\n\n";
    cout<<"Moechen sie noch etwas berechnen?(1=Ja, 2=Nein)\n";
    cin>>d;
    break;
    
    case 2:
    
    cout<<"Geben sie die erste Zahl ein:\n";
    cin>>e;
    
    cout<<"Geben sie die zweite Zahl ein:\n";
    cin>>f;
    cout<<"Ergebniss:"<<e-f<<"\n\n"; 
    cout<<"Moechen sie noch etwas berechnen?(1=Ja, 2=Nein)\n";
    cin>>d;
    break;   
    
    default:
    cout<<"Ihre Eingabe war ungueltig!\n\n";
    cout<<"Moechten sie es erneut versuchen?(1=Ja, 2=nein)\n";
    cin >> d;
    break;
    
    }
    }
    while(d==1);
    
      system("PAUSE");	
    
    }
    


  • Bassmaster schrieb:

    ...

    Eine Bitte, kannst du den Lesern des Codes die Arbeit erleichtern, in dem du deinen Code sinnvoll formatierst? Oder schreibst du tatsächlich deinen Code ebenso unleserlich wie du ihn hier einfügst?

    Beispiel einer möglichen lesbaren Formatierung:

    int main()
    {
      do
      {
        switch(...)
        {
          case ...:
            ...
            break;
        }
      }
      while(...);
    }
    

    cu André



  • Sry für meine schlechte Formatierung ^^

    Den oberen den habe ich Formatiert.

    Den unteren nicht den habe ich aber auch so im Borland Builder geschrieben XD



  • hat den keiner eine antwort 😞



  • Auch der obere Code ist NICHT formatiert.
    Immer abwechselnd die komplette Funktion einrücken ist eher sinnfrei. Normalerweise (ich gehe da erstmal nur von allen Programmierern aus, die ich so kenne) rückt man nach JEDER geöffneten geschweiften Klammer ( "{" ) um einen Tab nach rechts und die zugehörige schließende Klammer steht dann in der selben Spalte wie die öffnende, so wie asc das gezeigt hat.

    // HAUPTPROGRAMM
    
    int main()
    {
    	rechner r;
    	int wahl=r.calc();
    
    	if (wahl==1)
    	{
    		r.add();
    	}
    
    	if(wahl==2)   // bzw.  else {...}  oder bei mehreren Auswahlmöglichkeiten switch und case verwenden
    	{
    	r.sub();
    	}
    
    	system("PAUSE");
    
    	fflush(stdin);  // Zum Löschen des Tastaturpuffers
    
    	return 0;  // Wenn die main-Funktion schon vom Typ int ist, muss an sich auch etwas zurückgegeben werden.
    }
    

    Gruß

    U-Boot



  • ok thx jetzt müsste ich nur noch wissen wie das mit dem while da geht ^^

    Aber erst mal versuch ich das jetzt gescheit zu formatieren 🙂



  • Ach, ich wusste doch, dass ich noch irgendwas da reinschreiben wollte...
    Auf sowas solltest du aber auch allein kommen können, wenn du sowas schonmal programmiert hast (2. Quelltext im Eröffnungspost), trotzdem bin ich heute mal so nett:

    // HAUPTPROGRAMM
    
    int main()
    {
    	rechner r;
    	char cEingabe;
    
    	do
    	{
    		int wahl=r.calc();
    
    		if (wahl==1)
    		{
    			r.add();
    		}
    
    		if(wahl==2)   // bzw.  else {...}  oder bei mehreren Auswahlmöglichkeiten switch und case verwenden
    		{
    		r.sub();
    		}
    
    		cout << "Nochmal? (j/n)";
    		fflush(stdin);  // Zum Löschen des Tastaturpuffers
    		cin >> cEingabe;
    	} while(cEingabe=='j' || cEingabe=='J');
    
    	return 0;  // Wenn die main-Funktion schon vom Typ int ist, muss an sich auch etwas zurückgegeben werden.
    }
    

    Sämtliche Klarheiten beseitigt?

    Gruß

    U-Boot



  • ok thx :xmas1: :xmas2: 🙂


Anmelden zum Antworten