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.

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;
Quelqu'un aurait une idée du problème ??? Merci d'avance