Fakultät funktioniert nicht! Hilfe
-
Hallo irgendwie funktioniert meine Fakultätsberechnung nicht, findet jemand, das was ich übersehe...Ich bin neu in C, freue mich über jeden Mentor der mich unterstützt.
// Don't copy! :).
//#include <stdio.h>
int main (void){
short zahl;
long ergebnis;
int i;printf("Zahl eintippen\n");
scanf("%d",&zahl);if (zahl==0) {
printf("Fakultät ist 1!");
}else{
ergebnis=1;
i=1;
do {
ergebnis=ergebnis*i;
i++;
} while (i == zahl);printf("\n%d",ergebnis);
}return 0;
}
-
Biite das naechste Mal Code-Tags verwenden.
Ueberlege dir mal, wie oft die do-while Schleife durchlaufen wird mit der Bedingung
while (i == zahl)
Du hast ja i = 1. Und wenn du z.B. zahl = 10 eingibst. Wie oft wird die Schleife durchlaufen?
-
Funktioniert nicht, ist keine vernünftige Fehlerbeschreibung. Daher gucke ich auch nicht genau hin und sage nur, dass mir ein
while (i == zahl);
sehr komisch vorkommt.
-
Mit cpp-Tags sieht es doch gar nicht so übel aus.
#include <stdio.h> int main (void){ short zahl; long ergebnis; int i; printf("Zahl eintippen\n"); scanf("%d",&zahl); if (zahl==0) { printf("Fakultät ist 1!"); }else{ ergebnis=1; i=1; do { ergebnis=ergebnis*i; i++; } while (i == zahl); printf("\n%d",ergebnis); } return 0; }
Das while heißt "solange": Solange die Bedingung wahr ist, wird die Schleife ausgeführt. Darum
while (i <= zahl)
Und der Formatspecifier bei
scanf()
für einshort
ist "%hd"
Nimm aber lieberint
dafür. Besser nochunsigned int
bzwunsigned long
-
Ich verneige mich vor eurem Wissen
Verzeihung für die Anfängerfehler !