zero61 Geschrieben 5. Mai 2009 Geschrieben 5. Mai 2009 Hallo, also kommen wir nun mal zu einer anderen Aufgabe : Schreiben Sie ein Programm zur einfachen Zinsrechnung! Es sollen folgenden Werte eingegeben werden: Kapital: Kommazahl Zinssatz: Kommazahl in Prozent Jahre: Ganzzahl Die Zinsen werden nach der einfachen Zinsrechnung, wie folgt berechnet: Zinsen =((Kapital * Zinssatz * Jahre)100) Es werden die Jahre, Zinsen und das Endkapital mit 2 Nachkommastellen ausgegeben. z.B. Ihr Kapital verzinste sich in 5 Jahren auf 12345.67 Euro. Es enthaelt 345.67 Euro Zinsen So das war die Aufgabenstellung. Nun mal mein Code dazu, aber mit einem Fehler laut C++ Builder ([C++ Fehler] zins.cpp(29): E2060 Unzulässige Verwendung einer Fließkommazahl) Passt irgendwas nicht mit dem hoch jahre //--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> #include <conio.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { float kapital=0; float zinssatz=0; int jahre=0; float zinsen=0; float endkapital=0; printf("Kapital:"); scanf("%f",&kapital); printf("Zinssatz:"); scanf("%f",&zinssatz); printf("Jahre:"); scanf("%i",&jahre); zinsen= ((kapital*zinssatz*jahre)/100); endkapital=(kapital*((1+zinssatz/100)^jahre)); printf("Ihr Kapital verzinste sich in %i Jahren auf %10.2f EUR",jahre,endkapital); printf("Zinsen sind %10.2f EUR",zinsen); return 0; } //--------------------------------------------------------------------------- :eek:eek Zitieren
Guybrush Threepwood Geschrieben 5. Mai 2009 Geschrieben 5. Mai 2009 ^ ist ein exklusives Oder und keine Potenz. Zum Potenzieren musst du die pow() Funktion verwenden Zitieren
zero61 Geschrieben 6. Mai 2009 Autor Geschrieben 6. Mai 2009 ^ ist ein exklusives Oder und keine Potenz. Zum Potenzieren musst du die pow() Funktion verwenden SUPER! Funktioniert jetzt Danke! //--------------------------------------------------------------------------- #pragma hdrstop #include <stdio.h> #include <conio.h> #include <math.h> //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { float kapital=0; float zinssatz=0; int jahre=0; float zinsen=0; float endkapital=0; //-----------------------------EINGABE------------------------------------------ printf("Kapital:"); scanf("%f",&kapital); printf("Zinssatz:"); scanf("%f",&zinssatz); printf("Jahre:"); scanf("%i",&jahre); //-----------------------------BERECHNUNG_BEGINN-------------------------------- zinsen= ((kapital*zinssatz*jahre)/100); endkapital=(kapital*pow((1+zinssatz/100),jahre)); //-----------------------------AUSGABE------------------------------------------ printf("Ihr Kapital verzinste sich in %i Jahren auf %.2f EUR. \n",jahre,endkapital); printf("Zinsen sind %.2f EUR",zinsen); return 0; } //--------------------------------------------------------------------------- Zitieren
lit-web Geschrieben 6. Mai 2009 Geschrieben 6. Mai 2009 Hallo, also erstmal ist das definitiv kein C++ Code sondern C Code. Etwas ist mir aber auch aufgefallen, bin selber grade beom C lernen, allerdings im Selbstudium. Deine Variablendefinition: float kapital=0; float zinssatz=0; int jahre=0; float zinsen=0; float endkapital=0; Du Typisierst Variablen mit float aber gibst in der Zuweisung einen int Wert an. Mal genauer gesagt. float stellt eine Gleitpunktzahl dar, also müsstes du eigentlich auch deine Initialisierung als Gleitpunktzahl darstellen. z.B. float kapital = 0.0; stellt eine Gleitpunktzahl dar. float kapital = 0; Hier aber machst das eigentlich falsch. Da Typisierst du die Variable mit float und weist ihr aber mit 0 einen Ganzzahlwert. Zitieren
lit-web Geschrieben 6. Mai 2009 Geschrieben 6. Mai 2009 Ok danke, nunja ich ahbe das in einem openbook von Galileo Computing eben so gelesen, aber wenns egal ist gut. Ich finde es eben auch sauberer programmiert, aber das ist wohl Ansichtssache. Zitieren
Klotzkopp Geschrieben 6. Mai 2009 Geschrieben 6. Mai 2009 Streng genommen ist 0.0 auch nicht ganz richtig, denn das ist ein double-Literal. Ein float-Literal wäre 0.0f. Zitieren
bequiet Geschrieben 6. Mai 2009 Geschrieben 6. Mai 2009 Der Compiler macht aus dem 0 eh automatisch 0.0f da du ja den Datentyp angegeben hast. Zitieren
LBJ Geschrieben 11. Dezember 2010 Geschrieben 11. Dezember 2010 (bearbeitet) das hier ist meine Lösung für zinsberechnung. wollte wissen ob das richtig ist und wie ich bei Art_2 vorgehen soll. hier soll in Art_1 das gesamtguthaben nach einer einzugebenden Anzahl von Jahren berechnet und ausgegeben werde. und in Art_2 soll berechnet werden nach wie vielen Jahren sich das Guthaben verdoppelt hat. vielen Dank #include <stdio.h> #include <stdlib.h> #include <math.h> void main () { float kapital; static float zinssatz; int jahre; float zinsen; float endkapital; int anzahl_jahre; int guthaben; //-----------------------------EINGABE------------------------------------------ printf("Geben Sie den anfangs Kapital ein:"); scanf("%f",&kapital); printf("Geben Sie den Zinssatz ein:"); scanf("%f",&zinssatz); printf("Geben Sie Anzahl Jahre ein:"); scanf("%d",&jahre); //-----------------------------BERECHNUNG_BEGINN-------------------------------- endkapital=(kapital*pow(1+zinssatz/100,jahre)); for (int i=0; i<guthaben, i++; ){ endkapital=(kapital*pow(1+zinssatz/100,jahre)); guthaben = kapital*2; anzahl_jahre= //hier komm ich nicht weiter??? //-----------------------------AUSGABE------------------------------------------ printf ("\n"); printf ("Art_1:\n"); printf ("\n"); printf("\n\tEndkapital = %f\n",endkapital); printf ("\n"); printf ("\n"); printf ("Art_2"); printf ("\n"); printf ("\n"); printf ("\n\tAnzal_jahre = %f\n", anzahl_jahre); system("Pause"); } Bearbeitet 11. Dezember 2010 von LBJ Zitieren
Klotzkopp Geschrieben 12. Dezember 2010 Geschrieben 12. Dezember 2010 Du kannst das direkt ausrechnen, indem du die Zinsformel nach der Laufzeit auflöst (dazu brauchst du einen Logarithmus). Wenn du das mit einer Schleife machen willst, musst du einfach solange verzinsen, bis das erreichte Kapital mindestens doppelt so groß geworden ist (das ist dann die Schleifenbedingung). Die gesuchte Laufzeit ergibt sich aus der Anzahl der Schleifendurchläufe, die kannst du in einer zusätzlichen Variablen mitzählen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.