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 einwhile(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