Bitte um Hilfe bei Potenzen



  • Hallo liebe Gemeinschaft. Mein Taschenrechner kann nicht Rechnen... Kleinere Potenzen wie zum Beispiel 2^3 schafft mein Code Problemlos umzurechnen... Aber wenn ich dann zum beispiel 5^5 eingebe, kommt als Ergebnis 125 aber eigentlich sollte ja 5*5*5*5*5 = 3125 erscheinen... was ist in meinem Code falsch???

    cout << "Geben Sie die Basis der 1 Potenz ein.";
    cin >> zahl1;
    cout << "Geben Sie den Exponent ein.";
    cin >> zahl2;
    for (int i=0;i<meinepotenz;i++)
    {
    zahl2*=zahl1;
    }
    cout << "Potenz \t" << zahl2;
    cout << '\n';
    }

    return 0;
    }

    PS: Das ist nur der Auszug aus dem Block den es betrifft. Ich bin um jede Hilfe dankbar 🙂


  • Mod

    Es ist einfach völlig falsch und hat nichts mit Potenzen zu tun. Es multipliziert zwei Zahlen mehrmals miteinander. Wie oft, ist aus deinem Code gar nicht ersichtlich.

    Gib deinen Variablen mal vernünftige Namen, dann sieht man das von ganz alleine:

    cout << "Geben Sie die Basis der 1 Potenz ein.";
    cin >> basis;
    cout << "Geben Sie den Exponent ein.";
    cin >> exponent;
    for (int i=0;i<ballaballapingpong;i++)
    {
      exponent*=basis;
    }
    cout << "Potenz \t" << exponent;
    cout << '\n';
    

    Ist nun klar, wieso das Unsinn ist? Wenn du jemals ein korrektes Ergebnis hattest, dann war es reiner Zufall.



  • Edit: SeppJ war schneller.



  • SeppJ schrieb:

    Es ist einfach völlig falsch und hat nichts mit Potenzen zu tun. Es multipliziert zwei Zahlen mehrmals miteinander. Wie oft, ist aus deinem Code gar nicht ersichtlich.

    Gib deinen Variablen mal vernünftige Namen, dann sieht man das von ganz alleine:

    cout << "Geben Sie die Basis der 1 Potenz ein.";
    cin >> basis;
    cout << "Geben Sie den Exponent ein.";
    cin >> exponent;
    for (int i=0;i<ballaballapingpong;i++)
    {
      exponent*=basis;
    }
    cout << "Potenz \t" << exponent;
    cout << '\n';
    

    Ist nun klar, wieso das Unsinn ist? Wenn du jemals ein korrektes Ergebnis hattest, dann war es reiner Zufall.

    Ich vergas eventuell zu erwähnen das ich erst 3 Monate dabei bin c++ zu lernen... 😃 Für mich war das jetzt garnicht so schlecht das ich eben glück hatte und bei den ersten Versuchen etwas richtiges als Ergebnis raus bekommen habe. Aber nun gut scheint ja nicht der richtige Lösungsansatz zu sein...



  • Ok ich verstehe wo mein Fehler ist 🙂 Ich werde das gleich mal umändern und schauen ob es dann funktioniert. Aber trotzdem schon mal vielen Lieben dank.



  • axels die Variable "meinepotenz ist mit 2 deklariert...



  • SeppJ jetzt mal davon abgesehen wie ich die Variablen bezeichne.... Wenn es total falsch ist, wie wäre denn dann ein richtiger Ansatz? Bitte nicht falsch verstehen ich möchte KEINEN fertigen Code sondern nur ein bisschen Hilfe damit ich selbst drauf komme....



  • Wenn du so weit fertig bist, kannst du dir noch eine Optimierung überlegen. Und zwar kannst du den Exponenten halbieren und die Basis mit sich selbst multiplizieren, wenn der Exponent ganzzahlig ist. Wenn nicht, einfach mit der ursprünglichen Basis multiplizieren und 1 vom Exponenten abziehen.

    Also 5^5: Exponent ungerade.
    Also 5 * (5^4) Nun Exponent gerade.
    Also 5 * 25^2 Nun Exponent gerade.
    Also 5 * 625^1 -> Exponent = 1, aufhören.

    5^8 ist zum Beispiel = 25^4 = 625^2.

    Haben wir damals in der Schule gemacht 🙂



  • wob schrieb:

    Wenn du so weit fertig bist, kannst du dir noch eine Optimierung überlegen. Und zwar kannst du den Exponenten halbieren und die Basis mit sich selbst multiplizieren, wenn der Exponent ganzzahlig ist. Wenn nicht, einfach mit der ursprünglichen Basis multiplizieren und 1 vom Exponenten abziehen.

    Also 5^5: Exponent ungerade.
    Also 5 * (5^4) Nun Exponent gerade.
    Also 5 * 25^2 Nun Exponent gerade.
    Also 5 * 625^1 -> Exponent = 1, aufhören.

    5^8 ist zum Beispiel = 25^4 = 625^2.

    Haben wir damals in der Schule gemacht 🙂

    Danke dir für diesen Tip schon mal 🙂 Aber erstmal muss ich ja auf den richtigen Lösungsweg kommen damit mein Rechner richtig rechnet... 😞



  • Carlo_25 schrieb:

    SeppJ jetzt mal davon abgesehen wie ich die Variablen bezeichne.... Wenn es total falsch ist, wie wäre denn dann ein richtiger Ansatz? Bitte nicht falsch verstehen ich möchte KEINEN fertigen Code sondern nur ein bisschen Hilfe damit ich selbst drauf komme....

    Nein! Nicht davon angesehen, wie die Variablen heißen!! Das ist extrem wichtig!! Sowohl für die Lesbarkeit als auch dafür, Fehler zu finden!! Mit gehen langsam die ! aus! 😉

    Also: was willst du mit der Variablen "meinepotenz" erreichen? a^b hat 2 Zahlen, beide liest du ein.

    Warum multiplizierst du dann den Exponenten mit der Basis?

    Nimm eine neue Ergebnisvariable und setzte diese auf das neutrale Element der Multiplikation (1). Dann multipliziere diesen Wert Exponent-Mal mit der Basis. Fertig.

    Danach lies meinen vorherigen Post, wie es ggf. besser geht.



  • wob schrieb:

    Carlo_25 schrieb:

    SeppJ jetzt mal davon abgesehen wie ich die Variablen bezeichne.... Wenn es total falsch ist, wie wäre denn dann ein richtiger Ansatz? Bitte nicht falsch verstehen ich möchte KEINEN fertigen Code sondern nur ein bisschen Hilfe damit ich selbst drauf komme....

    Nein! Nicht davon angesehen, wie die Variablen heißen!! Das ist extrem wichtig!! Sowohl für die Lesbarkeit als auch dafür, Fehler zu finden!! Mit gehen langsam die ! aus! 😉

    Also: was willst du mit der Variablen "meinepotenz" erreichen? a^b hat 2 Zahlen, beide liest du ein.

    Warum multiplizierst du dann den Exponenten mit der Basis?

    Nimm eine neue Ergebnisvariable und setzte diese auf das neutrale Element der Multiplikation (1). Dann multipliziere diesen Wert Exponent-Mal mit der Basis. Fertig.

    Danach lies meinen vorherigen Post, wie es ggf. besser geht.

    Einen Moment ich probiere dieses sofort aus... Gib mir ein paar Minuten....



  • Carlo_25 schrieb:

    Wenn es total falsch ist, wie wäre denn dann ein richtiger Ansatz? Bitte nicht falsch verstehen ich möchte KEINEN fertigen Code sondern nur ein bisschen Hilfe damit ich selbst drauf komme....

    Allgemein BasisExponent
    Bei der Berechnung kommt nur die Basis vor. Der Exponent gibt vor, wie oft multipliziert wird.

    Als Beispiel 54 oder 5^4 ist 5*5*5*5 oder (Basis * Basis * Basis * Basis)
    Jetzt vergleich mal mit der Schleife bei SeppJ.


Log in to reply