Hilfe zu Programm zum Berechnen von Potenzen



  • Hallo
    bräuchte Hilfe beim Schreiben von einem Programm:

    Es soll die Summe der Quadrate der ersten n positiven Ganzzahlen
    1² + 2² + 3² + ………n²
    berechnet werden,
    Nach jeder Eingabe wird das Ergebnis ausgegeben und danach die nächste Zahl n angefordert.

    Hab noch kaum was mit C++ gemacht,wäre super wenn mir jemand helfen könnte.
    Vielen Dank schon mal im Vorraus

    Sorry hatte mich verschrieben



  • frage nicht grade eindeutig. mach mal zwei oder drei durchläufe per hand und schreib hier, bei welchen eingaben welche ausgaben kommen sollten.



  • meinst du so etwas?

    int ergebnis = 0;
    for (int i = 1; i <= n; i++)
       ergebnis = ergebnis + i*i;
    

    "ergebnis" sollte nun die Summe alle Quadrate der gesamten natürlichen Zahlen bis n beinhalten.



  • Gauss hat da mal was als kleines Kind gemacht, so ohne Schleifen ...



  • knivil schrieb:

    Gauss hat da mal was als kleines Kind gemacht, so ohne Schleifen ...

    jaja vollständige Induktion:
    1/6n(n+1)*(2n+1)

    will noch wer rekursion? *g*



  • nocheingast schrieb:

    knivil schrieb:

    Gauss hat da mal was als kleines Kind gemacht, so ohne Schleifen ...

    jaja vollständige Induktion:
    1/6n(n+1)*(2n+1)

    will noch wer rekursion? *g*

    ja, ich.
    denn

    int ergebnis = 1/6*n*(n+1)*(n+2);
    

    rechnet falsch.



  • Im Tafelwerk muesste die Summe der ersten n-Quadratzahlen als explixite Formel drin stehen, bin mir grad net sicher ob Gauss die auch als Kind schon hergeleitet hat.

    ja, ich.
    denn

    int ergebnis = 1/6*n*(n+1)*(n+2);
    

    rechnet falsch.

    Kein Wunder, es ist ja schon spaet. Probiers mal mit copy & paste :).



  • volkard schrieb:

    nocheingast schrieb:

    jaja vollständige Induktion:
    1/6n(n+1)*(2n+1)

    will noch wer rekursion? *g*

    ja, ich.
    denn

    int ergebnis = 1/6*n*(n+1)*(n+2);
    

    rechnet falsch.

    oh jo war zu dumm um abzuschreiben^^
    knivil hat die richtige formel... also statt "(n+2)" hätte da "(2n+1)" hingemusst.

    rekursiv wäre es glaube dies hier:

    int func(int n)
    {
      if (n <= 0)
        return 0;
      else
        return n*n + func(n-1); 
    }
    

    diesmal gab es nichts zum abschreiben 😃 trotzdem: ohne gewähr *g*

    Aber zurück zur Frage.
    War dies dein gesuchtes Problem?



  • knivil hat die richtige formel... also statt "(n+2)" hätte da "(2n+1)" hingemusst.

    Habe meine wieder rausgeloescht, da sie schon mal von "nocheingast" (dir?) gepostet wurde und volkhard mich verwirrt hat.



  • ist es jetzt schlimm, daß

    int ergebnis = 1/6*n*(n+1)*(2*n+1);
    

    auch falsch rechnet?
    c++ ist manchmal schon ne verrückte sprache.



  • hab ich gesehen... nur hab ich gar nicht gesehen das ich es richtig eingetippt habe und kann nun nicht mehr editieren -.-
    (sollte mich hier anmelden).

    dieses "zu dumm um abzuschreiben" war eigentlich auf mich bezogen, da ich dachte, ich hätte dir, volkard, die falsche formel geschickt, also bitte nicht falsch verstehen ^^



  • volkard schrieb:

    ist es jetzt schlimm, daß

    int ergebnis = 1/6*n*(n+1)*(2*n+1);
    

    auch falsch rechnet?
    c++ ist manchmal schon ne verrückte sprache.

    Schlimm, schlimm ... 🙂



  • volkard schrieb:

    ist es jetzt schlimm, daß

    int ergebnis = 1/6*n*(n+1)*(2*n+1);
    

    auch falsch rechnet?
    c++ ist manchmal schon ne verrückte sprache.

    vllt eine Klammer um (1/6) bzw (n*(n+1)(2n+1)) / 6;?
    Ansonst hättest du ja als ergebnis einen ziemlich kleinen Bruch wenn es mich nicht täuscht

    ansonst versuch mal:

    int ergebnis =  n*(n+1)*(2*n+1);
    ergebnis = ergebnis *1/6;
    


  • die klammer brachte nix.
    aber wenn ich am ende des ausdrucks oder gar in der folgezeile erst duch 6 teile klappts. danke.



  • Vielen Dank,danach habe ich gesucht


Anmelden zum Antworten