Ich schrieb einen Code, der faktoriell nach dem Erstellen einer myFactorial-Funktion berechnet, aber ich vermasselte es, wenn ich versuchte, größere Zahlen zu behandeln.Langformatige Verarbeitung bei der Berechnung von Fakultät
Ich versuche, mit Zahlen über 16 mit langen Format zu beschäftigen, aber die Ergebnisse sind irrelevant und die Dinge werden seltsamer im zweiten Teil des Codes. Während sich die Ergebnisse nicht mit der Eingabe ändern sollten, ändern sie sich!
ich meinen Code mit Kommentaren unten teilen:
main.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int yourNumber;
int i;
//Take the input
printf("I highly recommend you to make the command window fullscreen. Otherwise, the complete output will not be seen.\n");
printf("Enter a positive integer and I will tell you its factorial.\n");
scanf("%d", &yourNumber);
//Calculate factorial and print it in three ways
printf("Factorial of %d is %d!\n",yourNumber,myFactorial(yourNumber));
printf("Using long format, factorial of %d is %lld!\n",yourNumber,myFactorial(yourNumber));
printf("In hex: %#08X!",myFactorial(yourNumber));
// Here on, second part of my code begins
// Calculate and print factorials of numbers from 1 to 20 in %d format
printf("\n\n\nLet's see more d's!\n\n");
for (i = 1; i<21; i++) printf("%d\n", myFactorial(i));
// Calculate and print factorials of numbers from 1 to 20 in %lld format
printf("\n\n\nNow let's see more lld's!\n\n");
for (i = 1; i<21; i++) printf("%lld\n", myFactorial(i));
return 0;
}
myfactorial.c
#include <stdio.h>
long long int myFactorial(int bar) {
long long out = 1;
int i;
for (i=1; i<=bar; i++)
{
out *= i;
}
return out;
}
Können Sie das Problem, dem Sie gegenüberstehen, erläutern? Die faktorielle Ausgabe ist korrekt: http://cpp.sh/8twwh –
Hi, die Verwendung von long long führt ebenfalls zu einem Überlauf der langen Reichweite. Wenn Sie wirklich lernen wollten, gehen Sie das durch. http://www.geeksforgeeks.org/factorial-large-number/ Oder https://discuss.codechef.com/questions/7349/computing-factorials-of-a-huge-number-in-cc- Ein-Tutorial –