C-Aufgabe. Ich peil nix :(
-
warum wird bei der richtigen schleife der variable der wert 1 als erstes zugewiesen???
-
Entyl_Sa schrieb:
Das stimmt aber nicht! Das multipliziert die Zahl exp-1 mal mit zwei.
Also die Ergebnisse stimmen, außer bei zahl == 1. Wie auch immer, sollte eigentlich mehr den Nutzen einer Funktion zum Ausdruck bringen.
-
hmm. nur wenn ich anfange, warum ist dann der wert von ergebnis am anfang 1?
-
also ich hab den code jetz ma auf die richtige angepasst. aber egal was ich eingebe als ergebnis kommt immer 0..
# include <stdio.h> # include <ctype.h> int main() { float k, n, p, klammer, i, b, hinter=1; scanf("%d", &k); scanf("%d", &n); scanf("%d", &p); klammer=p/100+1; for (i = 0; i < n; i++) { hinter=hinter*klammer; b=hinter*k; printf("%d", b); } scanf ("%d", k); return 0; }
-
CarstenJ schrieb:
Also die Ergebnisse stimmen, außer bei zahl == 1. Wie auch immer, sollte eigentlich mehr den Nutzen einer Funktion zum Ausdruck bringen.
Eigentlich stimmt es nur bei zahl==2 .
Aber den nutzen einer Funktion stellt es sicher dar.
Was ich hier auch auf jeden Fall für angebracht halte.ergebnis ist am Anfang 1 weil x^0 immer eins ist, und sonst ist er für die erste multiplikation ja auch ganz praktisch, so bekommt man beim ersten Schleifendurchlauf zahl in ergebnis.
PS.: hälst du hinter und klammer für aussagekraeftige Variablennamen?
-
Aber ich krieg ja 0 raus... nich 1.
hmm. stimmt schon. die namen sind dumm. ich habse mal geändert:
# include <stdio.h> # include <ctype.h> int main() { float kapital, jahre, zinssatz, grundklammer, i, endkapital, klammer-potensiert=1; scanf("%d", &kapital); scanf("%d", &jahre); scanf("%d", &zinssatz); grundklammer=p/100+1; for (i = 0; i < jahre; i++) { klammer-potensiert=klammer-potensiert*grundklammer; endkapital=klammer-potensiert*kapital; printf("%d", endkapital); } return 0; }
-
Eigentlich stimmt es nur bei zahl==2 .
Argh....ja klar, du hast natürlich absolut recht :D.
@Schmank:
Klammer raff ich immer noch net.....Und du liest Ganzzahlen ein, keine floats. Mach es so:scanf("%f", &kapital)
Wobei ich immer noch nicht genau verstehe, was da eigentlich berechnet werden soll.
-
naja das steht ja in der aufgabe im ersten beitrag. das endkapital soll ausgerechnet werden. aber es sollen bei 5 jahren z.b. das kapital nach jedem der 5 jahre extra angezeigt werden. und klammer ist halt die formel p/100+1 die potensiert werden soll. die gesamtformel ist endkapital=(zinssatz/100+1)^n
hmm. stimmt. ich änder das mitm float mal. aber wenn keine steigen vorhanden ist, müsste doch zumindest das startkapital gezeigt werden und nicht 0 oder?
-
p/100+1
Das ergibt sofern mit INTs gearbeitet wird immer(!!) 1 sofern p<100. Und wo genau zeigt er die "0"?
*edit*
%d im printf ist für INTs, für FLOATs musst Du %f verwenden
-
falsch, wenn du das als int einliest, bleibts (das startkapital und der rest) bei der 0. also: %f
-
Du solltest den Code den du hier postest vielleicht auch schon vorher mal compiliert haben. Bei deiner letzten Version existiert p zum Beispiel garnicht.
'-' in Variablennamen ist auch nicht drin.
Variablennamen die sich auf deine Formel beziehen sind nicht sehr aussagekraefitg, wie du an CarstenJ´s Reaktion ja schon gemerkt haben solltest.
Dann würde ich jahre noch als int anlegen und siehe da, du hast ein funktionierendes Programm.
-
hmmm. also das mitm %f werd ich ma anguckn. ansonsten poste ich nochma. naja. ich geh jetz ins bett.
cya
-
Ich habs mit ner Klasse gelöst aber was ich witzig finde:
Mein Mathelehrer hat nicht übertrieben als er uns vom sog. Jesuspfennig erzählte, legt mal 0.01 (diesmal wohl Cent) bei 2 % Zinsen auf 2000 Jahre an
bereits nach 370 Jahren hat man ausgesorgtIrgendwie krass
-
...
Ein Kapital k wird n Jahre lang mit Zinseszins verzinst
...@SirLant
Deine Zinsformel ist die einfach Zinsformel, aber kein ZINSESZINS! D. h. die Formel, die von schmank ganz am Anfang gepostet wurde ist schon so richtig.
Ist ja schön und gut, dass deine Formel kürzer und schneller ist, aber sie ist leider definitiv falsch!@Schmank
Bisher wurde eigentlich alles gesagt was du brauchst. Vielleicht ist aber eine kleine Zusammenfassung nicht schlecht bei dem ganzen Durcheinander:1. Für Kapital und z bzw. zz musst du Fließkommazahlen (float oder double) verwenden.
2. Beim Teilen von Zahlen darauf achten dass du durch eine Fließkommazahl teilst ( /100 ist was anderes als /100.0; z. B. 10/100 = 0 ; 10/100.0 = 0.1)
3. Man potenziert die Zahl immer mit ihr selbst
4. Verwende die Formel, die dir auch vorgegeben ist.Und nun viel Erfolg.
-
Also ich sehe nicht wieso du nicht das Programm verwenden solltest, das SirLant am Anfang vorgeschlagen hatte.
Es benutzt doch die Formel b=k*(1+p/100)^n.
-
Ich habs mit ner Klasse gelöst aber was ich witzig finde:
Du bist hier in C, da gibts keine Klassen. Und selbst wenn, dürftet ihr Klassen ja auch noch nicht besprochen haben, wenn ihr noch keine Funktionen benutzen dürft...aber wenns richtig funktioniert, dann wird dein Lehrer ja hoffentlich zufrieden sein.
-
Hey ich bin nicht der Eröffner dieses Threads sondern nur ein Mitleser
Und ich hab das Problem halt mit ner Klasse gelöst und fand die Jesuspfenniggeschichte irgendwie witzig ( kommt mehr geld bei heraus als auf der gesamten Erde vorhanden)
-
Murks...ja, ok, hab mich verlesen. Dann ignorier meinen letzten Post
-
juhuuu
mit diesem code scheint es nun zu klappen:# include <stdio.h> # include <ctype.h> int main() { float k, n, p, klammer, i, b, klammer_fertig=1, jahr; scanf("%f", &k); scanf("%f", &n); scanf("%f", &p); klammer=p/100+1; printf("Jahr | Zinsen\n"); for (i = 1; i <= n; i++) { klammer_fertig=klammer_fertig*klammer; b=klammer_fertig*k; jahr++; printf("\n%3.0f", jahr); printf(" %3.4f\n", b); } scanf("%f", &p); return 0; }
daher erstmal fettes thx an euch.
oder findet jemand noch einen fehler? also die tests waren positiv
-
Also ad hoc, auch wenn dus schon gehört hast, solltest du Variablennamen sinnvoll vergeben. Du wirst wahrscheinlich in nem halben Jahr nicht mehr wissen, was Klammer eigentlich macht, was klammer_fertig bedeutet etc. Ich sprech da aus Erfahrung
.....auf Funktionalität hab ich das nicht getestet.