`` `c
#include
#include
#include
Long Long Long fattoriale (int n) {
if (n <0) {
fprintf (Stderr, "Errore:il fattoriale non è definito per numeri negativi. \ N");
uscita (1); // Esci con un codice di errore
}
if (n ==0) {
Ritorno 1;
}
risultato lungo lungo =1;
per (int i =1; i <=n; i ++) {
if (llong_max /risultato
fprintf (Stderr, "Errore:fattoriale supera il massimo valore lungo lungo. \ N");
uscita (1);
}
risultato *=i;
}
risultato di ritorno;
}
int main () {
int num;
printf ("Immettere un numero intero non negativo:");
if (scanf ("%d", &num)! =1) {
fprintf (stderr, "Errore:input non valido. \ n");
Ritorno 1; // Esci con un codice di errore
}
fatto a lungo lungo =fattoriale (num);
printf ("fattoriale di %d =%lld \ n", num, fact);
restituzione 0;
}
`` `
per compilare ed eseguire questo codice:
1. Salva: Salva il codice come file `.c` (ad esempio,` factorication.c`).
2. Compila: Apri un terminale e usa un compilatore C (come GCC) per compilare il codice:
`` `Bash
GCC Factorrial.C -o fattoriale
`` `
3. Run: Eseguire il programma compilato:
`` `Bash
./Factorial
`` `
Il programma ti chiederà di inserire un numero.
Miglioramenti e spiegazioni:
* Gestione degli errori: Il codice include controlli per:
* Input negativo: Gestisce esplicitamente l'input negativo, che non è definito per i fattoriali.
* Overflow: Previene il potenziale trabocco controllando se la prossima moltiplicazione supererebbe il valore massimo che un numero intero "lungo lungo" può contenere (`llong_max`). L'uso di `long long` fornisce una gamma più ampia di` int` o `long`.
* Input non valido: Verifica se `scanf` leggi correttamente un numero intero.
* `Long Long` Tipo di dati: L'uso di `Long Long` fornisce un intervallo più ampio per il calcolo fattoriale, consentendo di calcolare fattoriali di numeri più grandi prima di incontrare l'overflow. Tuttavia, anche "lungo" ha limiti. I fattori fanno crescere estremamente rapidamente.
* Cancella messaggi di errore: I messaggi di errore informano l'utente sul problema specifico riscontrato.
* Codici di uscita: Il programma utilizza codici di uscita appropriati (0 per il successo, 1 per errori) che è una buona pratica per i programmi che potrebbero essere chiamati da altri script o programmi.
Ricorda che i fattoriali crescono incredibilmente velocemente. Anche "Long Long" traboccerà per input relativamente piccoli (ad es. 21!). Per fattoriali arbitrariamente grandi, dovresti utilizzare una libreria aritmetica a precisione arbitraria specializzata.
Informazioni correlate
sistemi © www.354353.com