C-Aufgabe. Ich peil nix :(
-
Nochmal ne Frage: wofür isn die variable zahl genau? also was genau ist ihre bedeutung???
-
hmm. blöde frage eigentlich. hmm. ich glaube ich werds selbst mal versuchen...
thxcya
-
Also ich habs jetz mal versucht, aber irgendwie klappts immer noch net
# include <stdio.h> # include <ctype.h> int main() { float k, n, p, klammer, i, hintere=1, b; scanf("%d", &k); scanf("%d", &n); scanf("%d", &p); klammer=p/100+1; for (i = 0; i < n; i++) { hintere=hintere*klammer; b=hintere*k; printf("%d", b); } scanf ("%d", k); return 0; }
-
versuch mal
scanf("%d\n",&x);
btw. solltest du eine genaue Fehler Beschreibung mitliefern. "geht nicht" sorgt nicht dafür, dass man dir gut helfen kann.
lies dir am besten mal http://www.catb.org/~esr/faqs/smart-questions.html durch
-
Ich verstehe nicht genau was Du mit der Schleife da versuchst... Aber ne Potenzierung ist es nicht wirklich...
Potenz = x mal mit sich SELBST Multipliziert, ich sehe aber kein selbst*selbst, sondern nur selbst*anders
Die Potenzier SChleife muss so aussehen:
for(i=1; i<=n; i++) { potenz=potenz*potenz; }
AUSSERHALB der Schleife multiplizierst Du das dann mit dem anderen kram
-
k. danke
werd gleich ausprobieren.
-
Ich würde das auch eher in eine Funktion packen:
int myPow(int zahl, int exp) { int i; if(exp == 0) return 1; // Sonderfall: zahl hoch 0 ist immer 1.... for(i = 1; i<exp; i++) zahl *= 2; return zahl; }
Das hat den Vorteil, dass es übersichtlicher ist. Die würdest du dann z. B. so aufrufen:
printf("%i\n", myPow(2,5));
-
hihi. funktionen kommen erst nach den sommerferien...^^
also ich hab das jetz so gemacht, aber egal was ich eingebe, es kommt immer 0 raus =((
# include <stdio.h> # include <ctype.h> int main() { float k, n, p, klammer, i, b; scanf("%d", &k); scanf("%d", &n); scanf("%d", &p); klammer=p/100+1; for (i = 0; i < n; i++) { klammer=klammer*klammer; b=klammer*k; printf("%d", b); } scanf ("%d", k); return 0; }
-
ups. hab das mitm ausserhalb nich gemacht. hach ich hohle birne..^^
-
hmm. aber warum ausserhalb? es soll ja immer zu dem zeitpunkt ausgegeben werden...! oder etwa nicht?
-
int myPow(int zahl, int exp) { int i; if(exp == 0) return 1; // Sonderfall: zahl hoch 0 ist immer 1.... for(i = 1; i<exp; i++) zahl *= 2; return zahl; }
Das stimmt aber nicht! Das multipliziert die Zahl exp-1 mal mit zwei.
for(i=1; i<=n; i++) { potenz=potenz*potenz; }
Ist auch nicht richtig. Hier wird 4^3 :
44=16
1616=256
ausgerechnet.Aber eine korekte Schleife für die Potenz war ja auch schon zu sehen:
#include <stdio.h> int main (void) { int zahl = 10; int ergebnis = 1; int exp = 5; int i; for (i = 0; i < exp; i++){ ergebnis *= zahl; } printf ("%d",ergebnis); getchar (); return 0; }
-
Wie definiert ihr 0^0, eingie definieren es ja als 1, andere als undefiniert.
-
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?