Programm schreiben, dass die ersten k Kubikzahlen addiert



  • Hallo,

    ich sitze gerade an folgender Aufgabe und komme leider nicht so recht weiter.

    Es geht darum, ein Programm zu schreiben, dass die ersten k Kubikzahlen addiert und deren Summe auf dem Bildschirm ausgibt. Der Benutzer soll dabei aufgefordert werden, die Zahl k einzugeben.

    Zur Lösung soll eine for-Schleife verwendet werden.

    Wenn man also beispielsweise 3 angibt, dann soll als Ergebnis 36 erscheinen, weil 1^3 + 2^3 + 3^3 = 36 ist.

    Könnt ihr mir helfen, wie ich die for-Schleife entwickle.
    Ich würde denken, dass diese mit 0 initialisiert werden müsste. Aber letztlich weiß ich nicht, wie ich die Rechnung mit der for-Schleife erstellen kann.

    Ich würde mich über eure Hilfe freuen 🙂



  • double sum;
    for(int i = 1; i<=k; ++i){
    sum += std::pow(i,3);
    }
    

    Kann das denn so schwer sein? Google doch einfach mal nach for-schleife c++ und du erhälst haufenweiße Beispiele, die du nur auf deinen Anwendungsfall übertagen musst.

    @Moderation: Beitrag gehört warscheinlich in ISO-C++ Subforum.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum MFC (Visual C++) in das Forum C++ (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • axels. schrieb:

    double sum;
    for(int i = 1; i<=k; ++i){
    sum += std::pow(i,3);
    }
    

    Kann das denn so schwer sein?

    Offensichtlich, denn deine Lösung ist nicht ganz korrekt:

    a) Die Variable "sum" sollte mit 0 initialisiert werden.
    b) Wenn von Kubikzahlen die Rede ist, geht es wahrscheinlich um Ganzzahlen. Es ist daher zumindest äußerst fraglich, ob man wirklich die Funktion "pow" nutzen sollte oder ob nicht i*i*i besser wäre...



  • Es gilt k=1nk3=(k=1nk)2\displaystyle \sum _{k=1}^{n}k^{3}={\bigg (}\sum _{k=1}^{n}k{\bigg )}^{2}. Wendet man nun die Gausssche Summenformel an, so erhält man (n2+n)24\displaystyle\frac{(n^2+n)^2}{4}.
    In C++: (ohne OF- / Fehlerprüfung)

    #include <iostream>
    
    template< typename T >
    T sqr( T const& x ) {
    	return x * x;
    }
    template< typename T >
    T sum_cubes( T const& n ) {
    	return sqr( sqr( n ) + n ) / T{ 4 };
    }
    int main() {
    	for( unsigned n; std::cin >> n; std::cout << sum_cubes( n ) << '\n' );
    }
    


  • Sehr schön!

    Vor allem, weil die Aufgabenstellung erfüllt wird, also zur Lösung eine for-Schleife benutzt wird. Ist sicher nicht so, wie die Aufgabe gemeint war, aber natürlich viel besser.



  • Danke für die Hilfe.
    Ich habe mal einen Ansatz versucht, aber leider sind hier wohl noch ein par Fehler enthalten. Kann mir jemand da helfen. Vor allem weiß ich noch nicht genau, wie ich die Summe richtig darstelle.

    #include "stdafx.h"

    int main()
    {
    int i, k; //Deklaration der beiden Variablen
    double sum;
    sum=0; //Sum sollte ja mit 0 initialisiert werden wurde gesagt
    cout << "Gebe an, wie viele Kubikzahlen addiert werden sollen" << endl;
    cin >> k;
    for (i=1; i<=k, i++;)
    sum=(i*i*i);
    cout << "Die Summe der ersten" << k << "Kubikzahlen ist:" << sum (i*i*i);
    _getch();
    return 0;
    }



  • Du sollst mit der Schleife die Summe aller Werte bilden.

    Also zum bisherigem Wert, den neuen Wert addieren.


Log in to reply