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?


  • Mod

    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 ein short ist "%hd"
    Nimm aber lieber int dafür. Besser noch unsigned int bzw unsigned long



  • Ich verneige mich vor eurem Wissen 🙄
    Verzeihung für die Anfängerfehler ! 😃

    👍 👍 👍


Anmelden zum Antworten