Geometrische Reihen *Grübel*



  • Man könnte jetzt auch sich an Mathe in der 8. Klasse (wars mein ich, bin nemmer ganz sicher) erinnern und sich erinnern, dass

    1+1/2+1/4+...+1/2[h]n[/h] = 2 - 1/2[h]n[/h] ist...

    oder in Code

    x = 2 - std::pow(0.5, n);
    

    /edit: btw, ums genau zu nehmen ist die geometrische Reihe der Grenzwert der Summe mit n -> ∞
    Aber wenns schon in der Aufgabenstellung so salopp genahndhabt wird scheint das ja nicht weiter wichtig zu sein.



  • Also ich dachte die Formel für eine geometrische Reihe wäre das hier:
    sn = a1 * (1-q^(n+1))/1-q
    q ist der konstante Faktor(ungleich 1)
    a1 -> Startwert
    (http://de.wikipedia.org/wiki/Geometrische_Reihe)

    In deinem Fall müsste q=1/2 sein und a1 (manchmal auch als a0 bezeichnet)müsste 1 sein.

    Die Summenformel, die von Paul Manns vorgeschlagen wurde, kann man ,glaube ich, nur bei arithmetischen Reihen verwenden.
    (http://de.wikipedia.org/wiki/Arithmetische_Reihe)



  • Ach man.. ich probier das jetzt mit den Schleifen, mal sehen wie weit ich komme, ich meld mich abends nochmal, wie weit ich bin .. 😃



  • eins nach unten bitte 😉



  • So hab mir doch mal die mühe gemacht und nen Flussdiagramm hereingestellt

    http://i10.photobucket.com/albums/a110/Eisi_86/Flussdiagramm.jpg

    dementsprechend hab ich neuprogrammiert.. abebr weiter komm ich nicht!

    #include <iostream>
    #include <math.h>
    using namespace std;
    int main(void)
    {
    int zaehler, n=0;
    double teil_reihe, summe;

    while(n<=1)
    { cout << "Geben Sie bitte eine positive ganze Zahl groesser gleich 1 ein!\n\n";
    cin >> n;
    }
    zaehler=1;
    summe=1;
    teil_reihe=1;

    while(zaehler<=1)
    { teil_reihe=teil_reihe/2;
    summe=summe+teil_reihe;
    zaehler=zaehler+1;
    }

    cout << "\n\nDer Wert der geometrischen Reihe beträgt:"<< summe << "\n\n";
    return 0;
    }



  • zaehler=1;
    
    while(zaehler<=1)
    {
        ...
        zaehler=zaehler+1;
    }
    

    den Teil würde ich nochmal überdenken.



  • hmm ich komm nicht drauf.. -.-



  • In deiner zweiten while -Schleife deines Codes hast du

    while(zaehler<=1)
    

    als Bedingung geschrieben, allerdings heißt es an dieser Stelle in deinem Flußdiagramm: zaehler <= n? 😉



  • zudem kannst du

    zähler = zähler +1;
    

    durch

    zähler++;
    

    bei int variable -1 dementsprechend

    variable--
    

    Ich würde es an deiner Stelle mit der Summenformel versuchen

    int n;
    ....
    cin >> n;
    ...
    float summe= 1 * (0,5)^n;
    
    //oder
    
    double summe = 1 .....
    

    bin mir relativ sicher (habe mathe orientierungskurs auf gymnasium 😉 )



  • sorry ich kriegs nicht gebacken...ich bin immer noch nicht weiter und komme natürlich nicht auf die 1.9 .. . . .

    Ich versteh das langsam garnichts mehr.

    Ich versteh zwar das Prinzip das n immer um 1 steigen muss (n+1) und bei 5 aufhören muss aber wie ich dit hier in c++ umsetzen soll weiß ich nciht



  • juhuuu hab den Fehler gefunden 🙂

    #include <iostream>
    #include <math.h>
    using namespace std;
    int main(void)
    {
    int zaehler, n=0;
    double teil_reihe, summe;

    while(n<=1)
    {
    cout << "Geben Sie bitte eine positive ganze Zahl groesser gleich 1 ein!\n\n";
    cin >> n;

    zaehler=1;
    summe=1;
    teil_reihe=1;

    while(zaehler<=n) <<<< hier stand vorher While(zaehler<=1)..einfach nur n statt eins lool 🙂
    {
    teil_reihe=teil_reihe/2;
    summe=summe+teil_reihe;
    zaehler=zaehler+1;
    }
    }

    cout << "\n\nDer Wert der geometrischen Reihe beträgt:"<< summe << "\n\n";
    return 0;
    }



  • halo schrieb:

    Ich würde es an deiner Stelle mit der Summenformel versuchen

    int n;
    ....
    cin >> n;
    ...
    float summe= 1 * (0,5)^n;
    
    //oder
    
    double summe = 1 .....
    

    bin mir relativ sicher (habe mathe orientierungskurs auf gymnasium 😉 )

    Mal von der Summenformel abgesehen:

    Es sollte

    double summe = 1* pow(0.5, n);
    

    heißen, denn erstens macht das ^ nicht das, was du willst (potenzieren), sondern bitweises XOR und zweitens benutzt du in 0,5 den Kommaoperator, so dass 0 und 5 ausgewertet werden und dann die 5 zurückgegeben wird.

    Felix



  • nails extension



  • nails extension


Anmelden zum Antworten