Bonjour,
j'ai un projet de C qui consiste à faire des calculs sur de grands entier (au delà de 64bits), les opérations à implémenter sont *,/,+,-,! et c'est sur la factorielle que je rencontre des problèmes (multiplication & soustrait fonctionnentnt), elle fonctionne jusqu'à !99 mais me génère une erreur de segementation à partir de !100.
Voici ma fonction factorielle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 bigint factorielle(bigint); bigint factorielle(bigint nb1) { bigint tmp,resultat,sous; tmp=(bigint)malloc(sizeof(struct biginteger)); tmp=nb1; resultat=(bigint)malloc(sizeof(struct biginteger)); resultat->digits=(char *)malloc(1000); resultat=nb1; //bigint de valeur 1 qui servira à décrémenter nb1 sous=(bigint)malloc(sizeof(struct biginteger)); sous->taille=1; sous->digits[0]='1'; //tant que tmp ne vaut pas 1 while(tmp->taille!=1 || tmp->digits[0]!='1') { //On le décrémente et on le multiplie par le résultat précédent tmp=soustrait(tmp,sous); trim(&tmp); resultat=multiplication(resultat,tmp); } return resultat; }
Et ma stucture bigint, digits est un pointeur de caractère permettant d'implémenter mon entier.
Quelqu'un aurait une idée du problème ??? Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct biginteger { char * digits; int taille; char signe; }; typedef struct biginteger * bigint;
Partager