Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> sistemi >> Unix >> .

Fattoriale di un determinato numero in Unix usando C?

Questo programma C calcola il fattoriale di un numero inserito dall'utente e gestisce potenziali errori come input negativo e overflow. È progettato per compilare ed eseguire in un ambiente simile a Unix (Linux, MacOS).

`` `c

#include

#include

#include // per llong_max

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.

 

sistemi © www.354353.com