Taschenrechner mit Funktionen und Schleife



  • Hey,
    ich bräuchte dringend mal Hilfe.
    Seid kurzem befasse ich mich mit C++ bin aber noch Neuling und komme bei folgender Aufgabe nicht weiter. Vielleicht kann mir jemand helfen.

    Aufgabe 1)
    Programmieren Sie einen einfachen Taschenrechner. Er soll zwei Werte von der Tastatur einlesen und das Ergebnis einer Rechenoperation auf dem Bildschirm ausgeben. Als Rechenoperation sollen Addition, Subtraktion, Multiplikation und Division möglich sein. Die Rechenoperationen sollen als eigene Funktion erstellt werden.

    Aufgabe 2)
    Erweitern Sie den Taschenrechner so, dass er Potenzen berechnen kann. Der erste eingelesene Wert soll dabei die Basis bilden und der zweite eingelesene Wert den Exponenten. Wenn Sie die Zahlen 2 und 3 eingelesen haben, soll der Taschenrechner also 2hoch3 rechnen.
    Erstellen Sie für das Berechnen der Potenz eine eigene Funktion. Die Potenz soll durch eine Schleife errechnet werden.

    Ich habe Aufgabe 1 gelöst.
    Bei Aufgabe 2 habe ich die Schleife gemacht.
    ABER: ich bekomme beides nicht mit einander verbunden.

    zu Aufgabe 1)

    #include <iostream>
    using namespace std;
    void Addition()
    {
        int zahl1, zahl2;
        cout <<"Sie haben sich fuer die Addition entschieden.\n";
        cout <<"Geben Sie die 1. Zahl ein:\n";
        cin >> zahl1;
        cout <<"Geben Sie die 2. Zahl ein:\n";
        cin >> zahl2;
        cout <<"Ergebnis " << (zahl1 + zahl2);
        cout <<"\n";
    }
    void Subtraktion()
    {
        int zahl1, zahl2;
        cout <<"Sie haben sich fuer die Subtraktion entschieden.\n";
        cout <<"Geben Sie die 1. Zahl ein:\n";
        cin >> zahl1;
        cout <<"Geben Sie die 2. Zahl ein:\n";
        cin >> zahl2;
        cout <<"Ergebnis " << (zahl1 - zahl2);
        cout <<"\n";
    }
    void Division()
    {
        int zahl1, zahl2;
        cout <<"Sie haben sich fuer die Division entschieden.\n";
        cout <<"Geben Sie die 1. Zahl ein:\n";
        cin >> zahl1;
        cout <<"Geben Sie die 2. Zahl ein:\n";
        cin >> zahl2;
        cout <<"Ergebnis " << (zahl1 / zahl2);
        cout <<"\n";
    }
    void Multiplikation()
    {
        int zahl1, zahl2;
        cout <<"Sie haben sich fuer die Multiplikation entschieden.\n";
        cout <<"Geben Sie die 1. Zahl ein:\n";
        cin >> zahl1;
        cout <<"Geben Sie die 2. Zahl ein:\n";
        cin >> zahl2;
        cout <<"Ergebnis " << (zahl1 * zahl2);
        cout <<"\n";
    }
    int main()
    {
        int auswahl;
        cout <<"Taschenrechner\n";
        cout <<"\n";
        cout <<"Sie haben folgende Rechenoptionen:\n";
        cout <<"1. Addition\n";
        cout <<"2. Subtraktion\n";
        cout <<"3. Division\n";
        cout <<"4. Multiplikation\n";
    
        cin >> auswahl;
    
        if (auswahl == 1) Addition();
        if (auswahl == 2) Subtraktion();
        if (auswahl == 3) Division();
        if (auswahl == 4) Multiplikation();
    
        return 0;
    }
    

    Schleife:

    #include <iostream>
    using namespace std;
    int main()
    {
        int Base;
        int Exponent;
        int Ergebnis =1;
        cout <<"Geben Sie eine Zahl ein:\n";
        cin >> Base;
        cout <<"Geben Sie noch eine Zahl ein:\n";
        cin >> Exponent;
        for(int i=0; i<Exponent; i=i+1)
        {
            Ergebnis = Ergebnis*Base;
        }
        cout << Ergebnis << "\n";
        return 0;
    }
    

    Es wäre schön wenn jemand ein Tipp für mich hat.

    LG Sabrina

    Edit durch Arcoth: Code-Tags.



  • Du hast also den ersten Teil selber programmiert, kannst aber den zweiten nicht einbauen? Wer's glaubt ...



  • In meinen Arbeitsheften wird nur auf die einzelnen Bereiche eingegangen aber nicht wie man sie mit einander kombiniert.

    Aber ganz ehrlich: sehr schön zu sehen wie man hier neu aufgenommen wird.
    Vielen Dank.



  • Das könnte auch daran liegen,
    ... dass exakt diese Aufgabe hier schon mehrmals gestellt wurde (man suche z.B. nach "Taschenrechner" oder auch nach "Sie haben sich für die Addition entschieden")
    ... dass du nicht den C++-Button benutzt hast (ist jetzt von einem Moderator berichtigt worden)

    Außerdem könntest du selbst auf die Idee kommen, im Hauptprogramm z.B. die Auswahl

    if (auswahl == 1) Addition();
        if (auswahl == 2) Subtraktion();
        if (auswahl == 3) Division();
        if (auswahl == 4) Multiplikation();
    

    noch um einen weiteren Fall zu ergänzen:

    if (auswahl == 5) Potenzierung();
    

    (und an den anderen Stellen entsprechend ebenfalls ergänzen).

    Außerdem könntest/solltest du den gemeinsamen Code zum Einlesen der Zahlen nicht in jeder Funktion wiederholen. (Lehrer vermutlich unfähig)



  • ich habe schon etwas weiter gemacht aber ich klappt nicht.

    void Potenzen()
    {
    int i, Basis, Exponent, Ergebnis;

    cout <<"Geben Sie die Basis ein:\n";
    cin >> Basis;
    cout <<"Geben Sie den Exponenten ein:\n";
    cin >> Exponent;
    for(i=0; i<Exponent; i=+1)
    {
    Ergebnis = Ergebnis ^ Basis;
    }
    cout << Ergebnis << '\n';
    }
    int main()
    {
    int auswahl;
    cout <<"Taschenrechner\n";
    cout <<"\n";
    cout <<"Sie haben folgende Rechenoptionen:\n";
    cout <<"1. Addition\n";
    cout <<"2. Subtraktion\n";
    cout <<"3. Division\n";
    cout <<"4. Multiplikation\n";
    cout <<"5. Potenzen\n";
    cin >> auswahl;

    if (auswahl == 1) Addition();
    if (auswahl == 2) Subtraktion();
    if (auswahl == 3) Division();
    if (auswahl == 4) Multiplikation();
    if (auswahl == 5) Potenzen();

    return 0;
    }


  • Mod

    Wir sind nicht doof. Wer das erste Programm geschrieben hat, kann auch beide kombinieren. Das ist unmittelbar offensichtlich für jeden mit der geringsten Ahnung vom Thema. Koffervergleich: Das erste Programm demonstriert, wie jemand ein T-Shirt, eine Hose, und ein Handtuch in einen Koffer packt. Das zweite Programm demonstriert, wie er eine Badehose in einen Koffer packt. Jetzt fragt diese Person, wie sie die Badehose mit in den Koffer mit dem T-Shirt, der Hose, und dem Handtuch packen kann? Absolut unglaubwürdig.

    Faulen Säcken, die ihre Hausaufgaben nicht machen wollen, wird hier durchaus erstaunlich oft geholfen. Bei Leuten, die abschreiben, das Werk als ihr eigenes ausgeben, und dann auch noch scheinheilig abstreiten, wenn sie erwischt werden, ist aber relativ unwahrscheinlich, dass jemand helfen möchte.



  • ich kann natürlich die Potenz genauso "einpacken" wie zb. die Addition aber die Potenz soll durch eine Schleife laufen was die anderen nicht sind.
    Da liegt mein Problem und nicht wie oft ich was "einpacke".



  • backhas schrieb:

    ich habe schon etwas weiter gemacht aber ich klappt nicht.

    Das ist ja auch nicht der Potenzalgorithmus, denn du im Eröffnungspost benutzt hast.



  • Letzter Hilfsversuch von mir: du musst auch korrekt kopieren!

    Im Ursprungspost von dir hieß es:

    int Ergebnis =1;
        (...)
        for(int i=0; i<Exponent; i=i+1)
        {
            Ergebnis = Ergebnis*Base;
        }
    

    Daraus hast du nun gemacht:

    int (...) Ergebnis; 
    (...)
    for(i=0; i<Exponent; i=+1) 
    { 
    Ergebnis = Ergebnis ^ Basis; 
    }
    

    Man schaue genau hin: die Initialisierung (das "=1") fehlt und das Mal-Zeichen "*" hast du durch exklusives Oder "^" ersetzt.



  • void Potenzen()
    {
    int i, Basis, Exponent, Ergebnis=1;
    cout <<"Geben Sie die Basis ein:\n";
    cin >> Basis;
    cout <<"Geben Sie den Exponenten ein:\n";
    cin >> Exponent;
    for(i=0; i<Exponent; i=+1)
    {
    Ergebnis = Ergebnis * Basis;
    }
    cout << Ergebnis << '\n';
    }

    Es klappt nicht.
    Ich hab bestimmt Melonen auf den Augen.



  • backhas schrieb:

    Ich hab bestimmt Melonen auf den Augen.

    Du bist zu dumm deinen eigen Code zu kopieren.



  • backhas schrieb:

    Es klappt nicht.

    Ja, und der Kompiler sagt dir auch warum. Inklusive Zeile.



  • Ich bin soooooo bescheuert.
    Das kommt davon wenn man hier und da probiert, und die hälfte dabei übersieht.
    Ich danke euch echt alle, auch ganz besonders die, die mir den Kopf gewaschen haben.

    Danke



  • manni66 schrieb:

    Du bist zu dumm deinen eigen Code zu kopieren.

    Wäre es da nicht besser, gar nichts zu antworten?



  • audacia schrieb:

    manni66 schrieb:

    Du bist zu dumm deinen eigen Code zu kopieren.

    Wäre es da nicht besser, gar nichts zu antworten?

    Nein


Log in to reply