double pow (Rechnen mit Potenz)
-
Hallo Community,
vorab möchte ich sagen, dass ich erst mit C angefangen habe. Ich arbeite mit dem e-book von Jürgen Wolf und bin noch recht am Anfang, möchte nun aber einfach mal eine Rechnung schreiben.
Der Code sieht wiefolgt aus:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { /* Berechnung eines Kapitalanstieges* /*geg: */ double Jahre = 6; double aip = 0.08; double akap = 4000000; /*ges: */ double ekap; /* Berechnung: */ ekap = akap * double pow(aip,Jahre); printf ("Das Endkapital beträgt &d €\n", ekap); system("PAUSE"); return 0; }
Er zeigt mir ein Syntax-Fehler bei der Anwendung von double pow an, aber ich kann den Fehler einfach nicht erkennen. Könnt ihr mir helfen?
Habe schon rumgespielt, aber hat alles nichts genützt.
Mfg
Elexarie
-
du musst um das double noch lustige Klammern drum rum machen, da es sich um einen Cast handelt.
ekap = akap * (double) pow(aip,Jahre);
hier sollte sicher dann ein float oder double rauskommen, drum mit %f oder %lf
printf ("Das Endkapital beträgt %f €\n", ekap);
-
Vielen, vielen Dank.
Jetzt habe ich es so:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { /* gegeben: */ double akap = 1000000, pro = 0.05, jahre = 10; /* gesucht: */ double ekap = akap*(double) pow(pro,jahre); printf ("Das Endkapital beträgt %f\n", ekap); system("PAUSE"); return 0; }
Nun bekomme ich in meiner Ausgabe aber:
http://i40.tinypic.com/5z1oht.png
Wo ist mein Fehler. Ich denke mal irgendwie der falsche Datentyp aber da bin ich mir noch nicht so sicher.
-
BasicMan01 schrieb:
du musst um das double noch lustige Klammern drum rum machen, da es sich um einen Cast handelt.
ekap = akap * (double) pow(aip,Jahre);
Ich würde das double einfach weglassen.
-
Ich bin mir auch ziemlich sicher, dass das kein Cast ist, sondern eine falsche Schlussfolgerung bezüglich der Aufrufsyntax.
Wenn man pow in einem Buch o.ä. nachschlägt, findet man in der Regel die Deklaration:
double pow(double x, double y);
Als blutiger Anfänger könnte man jetzt auf die Idee kommen, dass das der Aufruf sein soll. Ist es aber nicht, der Aufruf lautet etwa so:
pow(x, y)
bzw. hier
ekap = akap * pow(aip, Jahre);
-
hier kommt folgendes raus
1000000 * (0,05^10) = 0,00000009765625brauchst du so genaue Werte?
Für mehr Kommastellen kannst du die Standardangabe vergrößernprintf ("Das Endkapital beträgt %.15lf\n", ekap);
//Edit: joa ... stimmt, pow gibt ja schon nen double zurück, drum ist die Aussage mit dem Cast wohl übertrieben.
-
syntaktisch ist alles in Ordnung. du hast aber den Prozentsatz nicht mit 1 addiert.
Elexarie schrieb:
Vielen, vielen Dank.
Jetzt habe ich es so:
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { /* gegeben: */ double akap = 1000000, pro = 0.05, jahre = 10; /* gesucht: */ double ekap = akap * pow(pro + 1,jahre); printf ("Das Endkapital beträgt %f\n", ekap); system("PAUSE"); return 0; }
Nun bekomme ich in meiner Ausgabe aber:
http://i40.tinypic.com/5z1oht.png
Wo ist mein Fehler. Ich denke mal irgendwie der falsche Datentyp aber da bin ich mir noch nicht so sicher.