frage zum double in bedingungen



  • für die dummies (ich imbegriffen) ;): was ist die "abkürzung" für long long? normal d also %d oder eine andere?

    ich werds sonst einfach mal mit d testen



  • Also ich hätte jetzt "lld" gesagt:

    #include <stdio.h>
    
    int main(void) {
        unsigned long long int zahl;
        unsigned long long int fak = 1;
        unsigned long long int i;
    
        scanf("%lld", &zahl);
    
        for(i = zahl; i > 1; i--) {
            fak *= i;
        }
    
        printf("Die Fak. von %lld betraegt: %lld\n", zahl, fak);
    
        return 0;
    }
    


  • #include <stdio.h>
    
    long long int zahl=0;
    long long int zahl_a=0;
    long long int f=1;
    
    int main(){
    
        printf("Ddieses Programm dient dazu um die Fakulteat einer zahl zu berechnen\n\n");
        printf("Bitte geben Sie eine Zahl ein: ");
        scanf("%ld", &zahl);
        zahl_a=zahl;
        while(zahl>1) {
            f=f*zahl;
            printf("zahl:%ld\n", zahl);
            printf("f:%ld\n", f);
            zahl=zahl-1;
            printf("zahl:%ld\n", zahl);
            }
    
        printf("Die Fakultaet von %ld ist: %ld\n", zahl_a, f);
        system("PAUSE");
        return (0);
    }
    

    also mit lld gehts (hier mit ld, geht aber trotzdem) aber am schluss zeigt es nur null aus?!?



  • Bei unsigned long long aber bitte %llu.

    Für das eigentliche Problem (zu kleiner Wertebereich) wäre wohl die GMP eine Idee.



  • zeigt immer noch das gleiche an: Ddieses Programm dient dazu um die Fakulteat einer zahl zu berechnen

    Bitte geben Sie eine Zahl ein: 10
    zahl:10
    f:10
    zahl:9
    zahl:9
    f:90
    zahl:8
    zahl:8
    f:720
    zahl:7
    zahl:7
    f:5040
    zahl:6
    zahl:6
    f:30240
    zahl:5
    zahl:5
    f:151200
    zahl:4
    zahl:4
    f:604800
    zahl:3
    zahl:3
    f:1814400
    zahl:2
    zahl:2
    f:3628800
    zahl:1
    Die Fakultaet von 10 ist: 0
    Drücken Sie eine beliebige Taste . . .

    also es sollte theorethisch gehen aber es zeigts einfach am schluss nicht an



  • TactX schrieb:

    Bei unsigned long long aber bitte %llu.
    Für das eigentliche Problem (zu kleiner Wertebereich) wäre wohl die GMP eine Idee.

    oder wenn nicht die letzten stellen wichtig sind, sondern nur die ersten, dann
    einfach die logarithmen addieren und nachher bla mal 10 hoch blubb anzeigen.
    lustigerweise ist schneller und einfacher, wenn man in die schleife ein

    while(f>=10)
     f/=10,
     e+=1;
    

    einbaut und am ende f mal 10 hoch e anzeigt.



  • sandmaster schrieb:

    zeigt immer noch das gleiche an: Ddieses Programm dient dazu um die Fakulteat einer zahl zu berechnen

    <snipp>

    also es sollte theorethisch gehen aber es zeigts einfach am schluss nicht an

    Ich schrieb

    Bei unsigned long long aber bitte %llu.

    Du bist bei long long int bei %ld, was falsch ist. %lld ist richtig.



  • hmpf geht immer noch net... es zeigt immer noch 0 an:

    #include <stdio.h>
    
    long long int      zahl=0,
                       zahl_a=0,
                       f=1;
    
    int main(){
    
        printf("Ddieses Programm dient dazu um die Fakulteat einer zahl zu berechnen\n\n");
        printf("Bitte geben Sie eine Zahl ein: ");
        scanf("%d", &zahl);
        zahl_a=zahl;
        while(zahl>1) {
            f=f*zahl;
            printf("zahl:%d\n", zahl);
            printf("f:%lld\n", f);
            zahl=zahl-1;
            printf("zahl:%lld\n", zahl);
            }
    
        printf("Die Fakultaet von %lld ist: %lld\n", zahl_a, f);
        system("PAUSE");
        return (0);
    }
    

    😡



  • 1. sind deine Formatbezeichner bei scanf()/printf() immer noch nicht einheitlich.
    2. du gibst aber nicht zufällig zu hohe Zahlen an? Bei long long int kannst du nämlich (höchstwahrscheinlich) höchsten 20! berechnen.



  • also bei int ist es etwa 14... aber ich möcht ev doch ei wenig höher... aber ich weiss net wieso es nicht geht


Anmelden zum Antworten