Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Besturingssysteem >> unix >> Content
Faculteit van een gegeven getal in Unix met behulp van c?
Dit C-programma berekent de faculteit van een door de gebruiker ingevoerd getal en behandelt mogelijke fouten zoals negatieve invoer en overflow. Het is ontworpen om te compileren en uit te voeren in een Unix-achtige omgeving (Linux, macOS).

```c

#include

#include

#erbij betrekken // Voor LLONG_MAX

lange lange faculteit(int n) {

als (n <0) {

fprintf(stderr, "Fout:Faculteit is niet gedefinieerd voor negatieve getallen.\n");

uitgang(1); // Sluit af met een foutcode

}

als (n ==0) {

retour 1;

}

lang lang resultaat =1;

voor (int i =1; ik <=n; i++) {

if (LLONG_MAX / result fprintf(stderr, "Fout:Factorial overschrijdt de maximale lange lange waarde.\n");

uitgang(1);

}

resultaat *=ik;

}

resultaat retourneren;

}

int hoofd() {

int num;

printf("Voer een niet-negatief geheel getal in:");

if (scanf("%d", &num) !=1) {

fprintf(stderr, "Fout:ongeldige invoer.\n");

retour 1; // Sluit af met een foutcode

}

lang lang feit =faculteit(num);

printf("Factoriaal van %d =%lld\n", num, feit);

retour 0;

}

```

Deze code compileren en uitvoeren:

1. Opslaan: Sla de code op als een `.c`-bestand (bijvoorbeeld `factorial.c`).

2. Compileren: Open een terminal en gebruik een C-compiler (zoals GCC) om de code te compileren:

``` bash

gcc faculteit.c -o faculteit

```

3. Uitvoeren: Voer het gecompileerde programma uit:

``` bash

./faculteit

```

Het programma vraagt ​​u een getal in te voeren.

Verbeteringen en uitleg:

* Foutafhandeling: De code bevat controles op:

* Negatieve invoer: Het verwerkt expliciet negatieve invoer, die niet is gedefinieerd voor faculteiten.

* Overloop: Het voorkomt een potentiële overflow door te controleren of de volgende vermenigvuldiging de maximale waarde zou overschrijden die een 'long long' geheel getal kan bevatten ('LLONG_MAX'). Het gebruik van 'long long' geeft een groter bereik dan 'int' of 'long'.

* Ongeldige invoer: Het controleert of `scanf` met succes een geheel getal heeft gelezen.

* `lang lang` Gegevenstype: Het gebruik van 'long long' biedt een groter bereik voor de factoriële berekening, waardoor u faculteiten van grotere getallen kunt berekenen voordat u overflow tegenkomt. Maar zelfs ‘lang lang’ kent grenzen. Factorials groeien extreem snel.

* Foutmeldingen wissen: De foutmeldingen informeren de gebruiker over het specifieke probleem dat zich heeft voorgedaan.

* Exitcodes: Het programma gebruikt de juiste exitcodes (0 voor succes, 1 voor fouten), wat een goede gewoonte is voor programma's die vanuit andere scripts of programma's kunnen worden aangeroepen.

Vergeet niet dat faculteiten ongelooflijk snel groeien. Zelfs 'lang lang' zal overstromen voor relatief kleine invoer (bijvoorbeeld 21!). Voor willekeurig grote faculteiten zou je een gespecialiseerde rekenkundige bibliotheek met willekeurige precisie moeten gebruiken.

Previous: Next:
  unix
·Hoe te testen Null Unix Script…
·Hoe lees je pz-bestanden in Un…
·Wat is opstartblok in UNIX? 
·Hoe maak je een Swap in Unix M…
·Belangrijkste functie van het …
·Hoe worden bestanden gedeeld t…
·Wat is een geavanceerde comman…
·Wie heeft Unix gemaakt? 
·Waarom gaf Bell Labs al het we…
  Related Articles
Wat is de betekenis van een introductie …
Wat is de betekenis van logica in de inf…
Wat is de betekenis van het hebben van e…
Wat is de betekenis van I/O in computers…
Wat is de rol van de kernel bij het func…
Wat is het belang van de systeemklok bij…
Wat is het belang van procedure in de in…
Wat is de definitie van computation en h…
Wat is het gemiddelde IQ van studenten c…
  Besturingssysteem Articles
·Hoe de primaire partitie in Vista format…
·Muis blijft hangen of loopt vast op Wind…
·Hoe je tekstbestanden importeren in een …
·Hoe te downloaden Windows CE Beelden Van…
·Hoe maak je Windows MCE sneller lopen 
·Hoe je koptelefoon gebruiken als Mic op …
·Hoe bedien je de camera op een MacBook? 
·Waar bevinden zich registerbestanden in …
·Hoe te Grub Dual Boot Verwijder 
Copyright © Computer Kennis https://www.nldit.com