Ralf Mohn: Berechnung mit Javascript innerhalb einer Schleife

Hallo zusammen.

Folgendes Problem habe ich:

es dreht sich um ein Zinses-Zins-Programm, welches mit einer while-schleife gesteuert werden soll. Die Schleife soll abbrechen, wenn das endkapital das doppelte des Anfangskapital erreicht hat (while(endkapital>anfangskapital*2)).

Innerhalb dieser Do-While-Schleife, soll die Berechnung durchgeführt werden. Die normale Formeln zu einer solchen Berechnung lautet ja: Endkapital = Anfangskapital * (Zinssatz + 1) ^Anzahl der Jahre [^=hoch].

das Problem ist, das die Anzahl der Jahre ja unbekannt ist, da diese mit der Schleife berechnet werden sollen. Wie kann ich also eine Variable mit einer Variable potenzieren?

Achja: Die Ausgabe muss auch die Berechneten Kapitale nach jedem Jahr enthalten.

Vielen Dank schonmal im Vorraus für die Hilfe :)

-Ralf Mohn

  1. Nabend,

    das Problem ist, das die Anzahl der Jahre ja unbekannt ist, da diese mit der Schleife berechnet werden sollen. Wie kann ich also eine Variable mit einer Variable potenzieren?

    Indem du sie einfach immer erhöhst. Vor der Schleife auf null setzten, dann immer eins erhöhen und neu berechnen.

    Achja: Die Ausgabe muss auch die Berechneten Kapitale nach jedem Jahr enthalten.

    Auch kein Problem:
    AnzahlJahre = 0
    Schleifenbeginn
      AnzahlJahre = AnzahlJahre ++ 1
      neues Endkapital berechnen
      Ausgabe von AnzahlJahre und Endkapital
    Schleifenende

    So in etwa :)

    Bis denne,

    1. hi,

      erstmal danke für die antwort :)

      Nabend,

      das Problem ist, das die Anzahl der Jahre ja unbekannt ist, da diese mit der Schleife berechnet werden sollen. Wie kann ich also eine Variable mit einer Variable potenzieren?
      Indem du sie einfach immer erhöhst. Vor der Schleife auf null setzten, dann immer eins erhöhen und neu berechnen.

      ja mit dem jahr++, soweit hatte ich's noch verstanden.

      Achja: Die Ausgabe muss auch die Berechneten Kapitale nach jedem Jahr enthalten.
      Auch kein Problem:
      AnzahlJahre = 0
      Schleifenbeginn
        AnzahlJahre = AnzahlJahre ++ 1
        neues Endkapital berechnen

      hier liegt das Hauptproblem. Ich weiß nicht, mit welcher funktion ich das Endkapital berechnen lassen kann. Der Rest ist ansich einfach, aber Javascript scheint kein ^ für hoch, oder ein geteilt durch -(Potenzwert) anzunehmen...

      mfg

      Ausgabe von AnzahlJahre und Endkapital
      Schleifenende

      So in etwa :)

      Bis denne,

      1. Nabend,

        Ich weiß nicht, mit welcher funktion ich das Endkapital berechnen lassen kann.

        Und warum hast du dann nicht schnell auf http://selfhtml.teamone.de/javascript/objekte/math.htm nachgesehen, welche Funktion du benötigen könntest?

        Bis denne,

        1. Und warum hast du dann nicht schnell auf http://selfhtml.teamone.de/javascript/objekte/math.htm nachgesehen, welche Funktion du benötigen könntest?

          Hubert,
          Warum sollte man das für die Grundrechenarten tun?
          Gunnar

          --
          Good results come from experience; and experience comes from bad results.
          1. Nabend,

            Warum sollte man das für die Grundrechenarten tun?

            Ich bekenne mich schuldig... War wohl wieder bei dem Potenzieren, welches natürlich so nicht benötigt wird :/

            Bis denne,

    2. So in etwa :)

      Viel zu kompliziert.

      Kapital = Anfangskapital
      Schleife:
        Kapital = Kapital * (1 + Zinssatz)
        Ausgabe Kapital
      bis Kapital >= 2 * Anfangskapital

      Gunnar

      --
      Good results come from experience; and experience comes from bad results.
      1. So in etwa :)

        Viel zu kompliziert.

        Kapital = Anfangskapital
        Schleife:
          Kapital = Kapital * (1 + Zinssatz)
          Ausgabe Kapital
        bis Kapital >= 2 * Anfangskapital

        Gunnar

        das problem ist, dass man dann so etwas ausgegeben bekommt:

        Jahr 1: Endkapital: 10200
        Jahr 2: Endkapital: 10200
        Jahr 3: Endkapital: 10200

        da der Zinseszins noch nicht berücksichtigt wurde :(

        »»Und warum hast du dann nicht schnell auf http://selfhtml.teamone.de/javascript/objekte/math.htm nachgesehen, welche Funktion du benötigen könntest?

        da gibt es zwar eine Methode mit pow, allerdings weiß ich nicht wie man die in die Schleife einbaut :(

        1. das problem ist, dass man dann so etwas ausgegeben bekommt:
          da der Zinseszins noch nicht berücksichtigt wurde :(

          Ralf,
          Dann sieht deine Schleife wohl anders aus als meine. Poste doch mal den Code.
          Gunnar

          --
          Good results come from experience; and experience comes from bad results.
          1. das problem ist, dass man dann so etwas ausgegeben bekommt:
            da der Zinseszins noch nicht berücksichtigt wurde :(

            Ralf,
            Dann sieht deine Schleife wohl anders aus als meine. Poste doch mal den Code.
            Gunnar

            hier mal der wichtige teil:

            var kapital=0;
            var endkap=0;
            var zins=0;
            i=0;

            kapital=prompt("Anfangskapital","10000");
            zins=prompt("Zinzen","0.02");

            kapital=eval(kapital);
            zins=eval(zins);
            i=eval(i);
            endkap=eval(endkap);

            do {

            Hier muss dann die entsprechende Bedingung rein, die bewirkt das die Zinseszinsberechnung durchgeführt wird<<
            i++;

            document.write("Jahr "+i+": Endkapital: "+endkap+" <br>");
            } while(endkap<kapital*2);

            Die ausgabe soll dann so aussehen:

            Jahr 1: Endkapital: 10200
            Jahr 2: Endkapital: 10404
            Jahr 3: Endkapital: 10820.16
            Jahr 4: Endkapital: 11036.5632
            Jahr 5: Endkapital: 11257.29446

            Rundung bau ich da dann natürlich noch mit rein.

            -Ralf

            1. i=eval(i);

              Überflüssig.

              endkap=eval(endkap);

              Ersetzen durch endkap = kapital;

              Hier muss dann die entsprechende Bedingung rein, die bewirkt das die Zinseszinsberechnung durchgeführt wird<<

              Und warum schreibst du hier nicht rein, was ich schon gesagt hatte?
              endkap *= (1 + zins);

              Gunnar

              --
              Good results come from experience; and experience comes from bad results.
              1. hi

                Und warum schreibst du hier nicht rein, was ich schon gesagt hatte?
                endkap *= (1 + zins);

                ich glaub du meintest das hier:

                do {
                endkap = kapital*(1 + zins);
                i++;
                document.write("Jahr "+i+": Endkapital: "+endkap+" <br>");
                } while(endkap<kapital*2);

                aber dann kommt am ende nur das hier raus:

                Jahr 1: Endkapital: 10200
                Jahr 2: Endkapital: 10200
                Jahr 3: Endkapital: 10200
                Jahr 4: Endkapital: 10200
                Jahr 5: Endkapital: 10200

                weil jetzt dem Programm nicht gesagt wird, dass im 2. Jahr im dem endwert des 1. Jahres gerechnet werden soll...

                aber ich hatte jetzt grad ne Idee und hab folgendes gemacht:

                do {
                endkap = kapital*(1 + zins);
                i++;
                document.write("Jahr "+i+": Endkapital: "+endkap+" <br>");
                kapital = endkap
                } while(endkap<kapital*2);

                jetzt bricht er die schleife nur nicht ab, da die variable kapital sich ja jetzt laufende verändert... es sollen (dürfen) aber keine weiteren variablen hinzugefügt werden.

                -Ralf

                1. endkap *= (1 + zins);

                  ich glaub du meintest das hier:

                  do {
                  endkap = kapital*(1 + zins);

                  Nein! Um Himmels Willen!
                  Ich meinte
                     endkap = endkap * (1 + zins);
                  und das schon seit [pref:t=70253&m=404351], nur dass meine Variablen anders heißen.

                  Der Operator *= ist eine abgekürzte Schreibweise, siehe http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#berechnung

                  Gunnar

                  --
                  Good results come from experience; and experience comes from bad results.
                  1. endkap *= (1 + zins);

                    ich glaub du meintest das hier:

                    do {
                    endkap = kapital*(1 + zins);

                    Nein! Um Himmels Willen!
                    Ich meinte
                       endkap = endkap * (1 + zins);
                    und das schon seit [pref:t=70253&m=404351], nur dass meine Variablen anders heißen.

                    hmm aber dann hab ich ja gar kein anfangskapital da mit drin ( = kapital). Dann bekomm ich als ergebniss nur:

                    do {
                    endkap = endkap * (1 + zins);
                    i++;
                    document.write("Jahr "+i+": Endkapital: "+endkap+" <br>");
                    } while(endkap<kapital*2);

                    Jahr 1: Endkapital: 0
                    Jahr 2: Endkapital: 0
                    Jahr 3: Endkapital: 0
                    usw...

                    1. hmm aber dann hab ich ja gar kein anfangskapital da mit drin ( = kapital).

                      Doch, weil du ja vor der Schleife
                         endkap = kapital;
                      zuweist, siehe [pref:t=70253&m=404401]

                      Gunnar

                      --
                      Good results come from experience; and experience comes from bad results.
                      1. hmm aber dann hab ich ja gar kein anfangskapital da mit drin ( = kapital).

                        Doch, weil du ja vor der Schleife
                           endkap = kapital;
                        zuweist, siehe [pref:t=70253&m=404401]

                        Gunnar

                        :D es funktioniert :D

                        vielen, vielen, vielen, dank :)

                        Hast mir echt geholfen :) Ich glaub ich wär allein nicht mehr drauf gekommen ;-)

                        -Ralf

                        1. :D es funktioniert :D
                          Hast mir echt geholfen :) Ich glaub ich wär allein nicht mehr drauf gekommen ;-)

                          Ralf,
                          Eine echte Hilfe war ich nur, wenn du auch verstehst, warum es jetzt funktioniert. Dann kommst du beim nächsten Mal auch selber drauf.

                          Gerngeschehen,
                          Gunnar

                          --
                          Good results come from experience; and experience comes from bad results.
  2. Endkapital = Anfangskapital * (Zinssatz + 1) ^Anzahl der Jahre

    das Problem ist, das die Anzahl der Jahre ja unbekannt ist, [...] Die Ausgabe muss auch die Berechneten Kapitale nach jedem Jahr enthalten.

    Das heißt doch für dich, die Anzahl der Jahre ist nicht unbekannt, sondern 1. Damit läufst du die Schleife durch.

    Wenn's nur darum gegangen wäre, die Zeit auszurechnen, nach der das Kapital sich vedoppelt hat, ginge das ohne Schleife. Einfach die Formel umstellen:

    Anzahl der Jahre = ln (Endkapital / Anfangskapital) / ln (1 + Zinssatz)
                     = ln 2 / ln (1 + Zinssatz)

    Gunnar

    --
    Good results come from experience; and experience comes from bad results.