wie kann ich wieder zurückspringen



  • Mal ganz unqualifiziert und nicht zielführend:

    Müsste man nicht:

    vote == 'a' or vote == 'd' or // usw...
    

    schreiben?



  • Hier ja, bei deinem heimischen Compiler vermutlich nicht 😉

    @newbi: Die Anweisung, über die Boris da gestolpert ist, ist übrigens sinnlos. Wenn du eine Variable mit mehreren Werten vergleichen willst, geht das nicht mit "wert==v1||v2||...", sondern mit "wer==v1||wert==v2||..." (deine Variante liefert immer true zurück, weil spätestens das 'd' einen Wert ungleich 0 hat).



  • diese falsche if anweisung hab ich bei meinem korrektur code sowieso drausen gelassen.. weil sie quasie druch die nächsten vier IF's ersetzt wird..



  • Wirdbald schrieb:

    Mal ganz unqualifiziert und nicht zielführend:

    Müsste man nicht:

    vote == 'a' or vote == 'd' or // usw...
    

    schreiben?

    Genau!

    @CStoll: Bei meinem heimischen Compiler ist das auch per define gelöst worden. Hier auf Arbeit allerdings nicht! ;-P



  • Danke für die schnelle Antwort.
    Ich habe Mal den geänderten Quellcode kopiet, und compiliert(gelinkt).
    Der erwartete Sprung, nach jedem Rechenschritt, zum Anfang, bleibt allerdings aus.

    Ziel dieser Übung war es für mich,
    funktionsfähige " Funktionsaufrufe und Schleifen " zu erzeugen, um ein Gefühl dafür zu bekommen.

    C++ ist doch einwenig schwerer zu lernen, als ich erwartet hatte. 😃

    Übrigens, ich benutze das MiniGW Developer Studio als Editor, Compiler, Linker.

    Ist mein Lernfortschritt normal ??? Bin ja gerade erst 2 Wochen an C++ drann 😕



  • In dieser Lernphase ist es vielleicht übertrieben, so ein großes Projekt anzufangen. Du solltest lieber von einem kleinen Hauptprogramm ausgehen ( int main(){return 0;} ) und das dann stückweise erweitern, das ist wesentlich leichter als einem vorgefertigten Haufen Spaghetti-Code Struktur geben zu wollen 😉



  • jepp hab übersehen das du bei jeder ifanweiseung ein "return 0;" machst.. was natürlich dazu führt das das programm immer weider beenden wird...

    jetzt müsste es klappen:

    #include <iostream> 
    #include <conio.h> 
    
    using namespace std; 
    
    float ergebnissadd (float, float);        //Erzeugung der Funktionen 
    float ergebnisssub (float, float); 
    float ergebnissmulti (float, float); 
    float ergebnissdivi (float, float); 
    
    int main() 
    { 
          char vote; 
    
          do{   
           cout << "Was moechten Sie tun ?\n"<<endl; 
           cout << "Moechten Sie addieren, subtrahiren, multiplizieren oder 
           dividieren ?\n"<<endl; 
    
           cout << "Bitte geben Sie den ensprechenden Anfngsbuchstaben ein (e für  EXIT): "; 
    
           cin >> vote; 
           cout << endl; 
    
            if (vote == 'a')        //addieren 
            { 
                cout << "Sie moechten also addieren !\n"<<endl; 
                cout << "Bitte geben Sie die erste Zahl ein : "; 
                float erstezahl; 
                cin >> erstezahl; 
                cout << "\nBitte geben Sie nun die zweite Zahl ein : "; 
                float zweitezahl; 
                cin >> zweitezahl; 
    
                float ergebniss; 
                ergebniss = ergebnissadd (erstezahl, zweitezahl); 
    
                cout << "\n\nDas Ergebniss ist : " << ergebniss << "\n"<<endl; 
    
            } 
    
                else if (vote == 's')        //subtrahieren 
                { 
                    cout << "Sie moechten also subtrahieren !\n"<<endl; 
                    cout << "Bitte geben Sie die erste Zahl ein : "; 
                    float erstezahl; 
                    cin >> erstezahl; 
                    cout << "\nBitte geben Sie nun die zweite Zahl ein : "; 
                    float zweitezahl; 
                    cin >> zweitezahl; 
    
                    float ergebniss; 
                    ergebniss = ergebnisssub (erstezahl, zweitezahl); 
    
                    cout << "\n\nDas Ergebniss ist : " << ergebniss << "\n"<<endl; 
    
                } 
    
                    else if (vote == 'm')        //multiplizieren 
                    { 
                        cout << "Sie moechten also multiplizieren !\n"<<endl; 
                        cout << "Bitte geben Sie die erste Zahl ein : "; 
                        float erstezahl; 
                        cin >> erstezahl; 
                        cout << "\nBitte geben Sie nun die zweite Zahl ein : "; 
                        float zweitezahl; 
                        cin >> zweitezahl; 
    
                        float ergebniss; 
                        ergebniss = ergebnissmulti (erstezahl, zweitezahl); 
    
                        cout << "\n\nDas Ergebniss ist : " << ergebniss << "\n"<<endl; 
    
                    } 
    
                        else if (vote == 'd')        //dividieren 
                        { 
                            cout << "Sie moechten also dividieren !\n"<<endl; 
                            cout << "Bitte geben Sie die erste Zahl ein : "; 
                            float erstezahl; 
                            cin >> erstezahl; 
                            cout << "\nBitte geben Sie nun die zweite Zahl ein : "; 
                            float zweitezahl; 
                            cin >> zweitezahl; 
    
                            float ergebniss; 
                            ergebniss = ergebnissdivi (erstezahl, zweitezahl); 
    
                            cout << "\n\nDas Ergebniss ist : " << ergebniss << "\n\n"<<endl; 
    
                        } 
                        else 
                          cout << "\nKeine zulaessige Angabe."; 
    
       }while(vote != 'e'); // e für EXIT 
    
         return 0; 
    } 
    
    float ergebnissadd (float x, float y)        //abschliessend die 4 Funktonen 
    { 
        return (x + y); 
    } 
    
    float ergebnisssub (float x, float y) 
    { 
        return (x - y); 
    } 
    
    float ergebnissmulti (float x, float y) 
    { 
        return (x * y); 
    } 
    
    float ergebnissdivi (float x, float y) 
    { 
        return (x / y); 
    }
    


  • Ist "do - while" so wie es da steht nicht ungünstig? wenn ich "e" eingebe, schreibt das Prog theoretisch immer "keine zulässige Eingabe" vor dem Beenden der Schleife.

    Oder vielleicht einfach:

    else if (vote != 'e')
    cout << "\nKeine zulaessige Angabe.";
    
    //anstelle von:
    
    else
    cout << "\nKeine zulaessige Angabe.";
    

    Aber das nur am Rande.



  • Hab mich nun endlich auch im Board registriert.
    Und schwupps !!! aus newbi2 wurde sunnysk 🙂

    Übrigens, das hab ich nicht einfach kopiert. Ich hab mir das alles selber ausgedacht, und aus dem Kopf heraus geschrieben.

    Nur mit dem zurückspringen habe ich es noch nicht so. Die Befehle dafür kamen noch nicht in meinem Buch. Ich wollte halt schnell ein Ergebniss 😉 .

    Funzt super !!!
    Und wieder etwas gelernt.

    Vielen Dank !!!



  • Mal zwei Dinge, die mir hier in den Augen brennen:

    1. Du kannst da eine ganze Menge Zeugs in Funktionen auslagern, um die Schleife übersichtlicher zu machen. Zum Beispiel bietet sich eine Funktion zwei_zahlen_einlesen an, z.B. ungefähr so:

    void zwei_zahlen_einlesen(float& zahl1, float& zahl2)
    {
        cout << "Bitte die erste Zahl eingeben:" << endl;
        cin >> zahl1;
        // weiterer Code
    }
    

    2. Die Schleife schreit ganz doll danach, von if, else & Co. befreit zu werden. Sie möchte gerne eine Switch-Anweisung haben. Ich habe das mal aus einem anderen Thread rüberkopiert:

    do{
       cin>>abfrage;
    
        switch(abfrage)
        {
            case 1:
            cout<<"Geben sie ein neue Zahl ein"<<endl;
            cout<<endl;
            cin>>in_Liste;
            eineMenge.hinzufuegen(in_Liste);
            break;
    
            case 2:
            cout<<"Geben sie das zu entfernede Element ein"<<endl;
            cout<<endl;
            cin>>in_Liste;
            eineMenge.entfernen(in_Liste);
            break;
    
            case 3:
            cout<<"Geben sie das zupruefende Element ein"<<endl;
            cout<<endl;
            cin>>in_Liste;
            eineMenge.istvorhanden(in_Liste);
            break;
    
            case 4:
            eineMenge.size();
            break;
        }
    }while(abfrage!=5);
    

Anmelden zum Antworten