Fakultät-Rechner
-
Hey Leute!
Bin neu im Forum und auch neu im Programmieren mit C!Wollte mit C Fakultäten berechnen, aber irgendwo im Quelltext hab ich nen Fehler.
Hier ist mein Quelltext:#include <stdio.h> int main(void) { //Deklaration der Variablen int fak, k, i; //Aufforderung printf("\nZu berechnende Zahl eingeben: "); //Einlesen der Zahl scanf("%d", &k); //RECHNUNG fak = k; for (i=1; k-i==1; i++) { fak=fak*(k-i); } //Ausgabe der Zahl printf("%d! = %d\n", k, fak); return 0; }
Zur Rechnung, wie ich mir das vorgestellt habe:
fak bekommt den eingegebenen Wert, zum Beispiel k=5.
Nun die Schleife:
fak wird der Wert fak*(k-i) zugewiesen, was demnach 5 * (5-1) ist.
Das heißt, jetzt ist fak=20.
Danach wird i um eins erhöht.
Nun wird fak der Wert fak*(k-2) zugewiesen, also 20 * (5-2).
usw bis man bei fak = 120 * 1 ankommt.Wenn ich das Programm ausführe und eine Zahl eingebe, kommt immer raus, dass
fak = k ist.. hab das Gefühl, dass meine Schleife nicht berechnet wurde..Irgendjemand ein Tipp?
Danke und Grüße
-
Die for-Schleife wird solange ausgeführt, solange die Bedingung wahr ist.
Bei dir steht dak-i == 1
. Das ist aber unwahr. Darum wird die Schleife erst gar nicht angefangen.Aber warum so kompliziert?
fak = 1; for (i=1; i <= k; i++) { fak = fak*i; }
Dann kannst du dir noch Gedanken über den Wertebereich machen.
Und in Zeile 7 definierst du die Variablen
-
Ah das heißt, ich müsste, wenn ichs auf meine komplizierte Weise mache, es so machen:
//RECHNUNG fak = k; for (i=1; k-i>=1; i++) { fak=fak*(k-i); }
= statt ==, also Eintrittsbedingung statt Austrittsbedingung..
naja ist die erste Schleife, die ich im Leben programmiere...Zum Wertebereich: Es müssten ganze Zahlen >=0 sein, int sind aber auch negative Zahlen, meinst du das vielleicht?
Danke für die schnelle Antwort übrigens!
-
ser_u schrieb:
...
= statt ==, also Eintrittsbedingung statt Austrittsbedingung..
naja ist die erste Schleife, die ich im Leben programmiere...Ich würde Durchlaufbedingung sagen.
ser_u schrieb:
Zum Wertebereich: Es müssten ganze Zahlen >=0 sein, int sind aber auch negative Zahlen, meinst du das vielleicht?
Ja.