C Zinsrechner Problem

Hallo ihr da draußen :P

Habe folgendes Problem...Habe mich jetzt an C gesetzt und schreibe nun meine ersten kleinen Versuche. Mein erstes Projekt war ein Zinsrechner. Ob das jetzt wirklich auch in der Realität so gerechnet wird weiß ich nicht, ich nimm die Formel die uns unser Wirtschaftslehrer in der Schule gezeigt hat her:

Zins= Z
Kapital= K
Zeit in Tagen= t
Prozentsatz= p

Z= (K * t * p) / (100 * 360)

Ich würde euch bitten Sachen wie: Das geht viel leichter als du das gemacht hast, erstmal nicht zu sagen, da ich gerne wissen möchte wo denn in meiner Form der Fehler war. Danach bin ich immer offen und dankbar für Tipps.
Ich hab jetzt also folgendes geschrieben:
Code:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int Kapital;
    int Tage;
    float Prozent;                                      
    int Zahl1=100;
    int Zahl2=360;


    printf ("Kapital in Euro:");
    scanf ("%d", &Kapital);
    printf ("Anzahl der Tage:");
    scanf ("%d", &Tage);
    printf ("Prozentsatz:");
    scanf ("%f", &Prozent);                              

    int Schritt1 = Kapital * Tage * Prozent;
    int Schritt2 = Schritt1 / Zahl1 * Zahl2;
    printf ("Ihr Zins entspricht:");
    printf ("%d", Schritt2);

    return 0;
}

Ich brauch ja für Kommazahlen float und muss dann bei scanf
"%f" eingeben. Das hat auch funktioniert wie ich z.B 1.5 eingegeben hab...Im nachhinein ist mir aber gekommen das es ja nicht 1.5 (%) heißt sondern 0.015.
Jetzt kommt bei mir da allerdings einfach so null raus

Danke schonmal
SkyLine
 
Code:
int Schritt1 = Kapital * Tage * Prozent;
    int Schritt2 = Schritt1 / Zahl1 * Zahl2;
---
Code:
int Schritt1 = ... // <-- egal was auf der rechten Seite ausgerechnet wurde, es wird zu einem int umgewandelt/abgeschnitten => d.h aus 1.5 wird 1, aus 0.foo wird 0
mögliche Lösung: den Type der Variable "Schritt1" anpassen.
Code:
int Schritt2 = Schritt1 / Zahl1 * Zahl2; // alle Variablen sind vom Typ int => also wird mit ganzen Zahlen gerechnet - und da ist z.B 1/2 == 0 (als Ganzzahlrechnung)
Mögliche Lösung: dem Compiler mittels "... / (float) Zahl1 * ..." mitteilen, dass man hier nicht mit ganzen Zahlen rechnen möchte (mehr kann man darüber z.B hier The C Book — Expressions and arithmetic oder hier The New C Standard: 6.3.1.8 nachlesen (Stichworte sind: "
casts" "arithmetic conversions") ;)
 
Ok danke schonmal.
Es wäre also sinnvoll bzw notwendig anstatt int Schritt1 bzw Schritt2 ein float Schritt1/2 zu machen oder?

Vielen Dank :)
SkyLine
 
Ok danke schonmal.
Es wäre also sinnvoll bzw notwendig anstatt int Schritt1 bzw Schritt2 ein float Schritt1/2 zu machen oder?

Für "Schritt1": ja.
Für "Schritt2" sollte man ggf. mit einem expliziten cast dafür sorgen, dass auf der rechten Seite der Zusweisung "Schritt2=..." von Anfang an mit Fließkommazahlen gerechnet wird (siehe hinzugefügte Links im vorherigen Posting bzw. das aktuelle Buch/Tutorial usw. welches Du gerade durcharbeitest).
Wobei, wenn Schritt1 nun vom Typ float ist, sollte dies gegeben sein.
 
Zuletzt bearbeitet:
So ich werde nicht schlau aus deinen Links :D
Ich habe also ein (float) vor Zahl1 wie in deinem Code eingefügt. Jetzt zeig er mir als Ergebniss: 48,wasweißich an. Meine Werte waren
k=30
t=30
p= 1,5% also 0.015

bei so geringer Laufzeit und so geringem Zinssatz klingen 48 doch schon unrealistisch.

Könnte hier vllt irgendjemand (der kurz ne Minute Lust und Zeit hat) meinen Code verbessern?

SkyLine
 
bei so geringer Laufzeit und so geringem Zinssatz klingen 48 doch schon unrealistisch.

Könnte hier vllt irgendjemand (der kurz ne Minute Lust und Zeit hat) meinen Code verbessern?
Erstmal: was stimmt hier nicht?
Code:
Z= (K * t * p) / (100 * 360)
vs.
Schritt1 / Zahl1 * Zahl2;
Hint:
10/2*5 = 25
10/(2*5) = 1
:)
Und
Code:
float Schritt1 = Kapital * Tage * Prozent;
float Schritt2 = Schritt1 / (Zahl1 * Zahl2);

PS:
p= 1,5% also 0.015
Wozu diese "Umrechnung"? Wir die Prozentangabe nicht schon durch die "100" in der Formel berücksichtigt :confused:
 
So jetzt aber. Danke dir!
Bin jetzt zumindest so weit das mein Ergebnis mit dem des Taschenrechners übereinstimmt. Hatte tatsächlich den Denkfehler mit den Klammern...

p= 1,5% also 0.015
Wozu diese "Umrechnung"? Wir die Prozentangabe nicht schon durch die "100" in der Formel berücksichtigt

Ganz ehrlich? Ich hab keine Ahnung. Hätte damals im Unterricht doch lieber etwas besser aufpassen sollen :D:thumb_up:
 
Zurück
Oben