Bonjour,
Je dois faire plusieurs opérations sur des entiers longs. Mais je bloque déjà à l'opération.
J'ai crée un type Entier_long qui contient un signe, une taille, et un tableau dans lequel est stocké chaque chiffre de mon entier long.
Je n'arrive pas trop m'en sortir, car il faut gérer plusieurs points :
-la taille des 2 entiers à comparer
-leur signe respectif
-le cas d'une retenue en plein milieu du nombre, mais aussi dans le cas où la retenue fait "grandir" la taille du nombre de +1.
-J'en oublie peut-être...
J'ai fait une multitude de tests, mais aucun n'était bon.
Je laisse une esquisse du dernier que j'ai testé, ça se trouve je suis sur la bonne voie...
J'ai tourné le problème dans divers sens, donc la méthode que je propose n'est peut-être pas la bonne, c'est la dernière que j'ai testé.( dans ce code je ne m'occupe pas encore des signes, si j'arrive déjà à additionner 2 nombres positifs ce sera un bon début)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 void Addition (Entier_long a, Entier_long b) { int taille_1=0, taille_2=0; int reste=0, i=0, s; int Max=0, Min=0; taille_1=a.taille; taille_2=b.taille; Entier_long NbGrand, NbPetit; int somme[Max+2]; if(taille_1>=taille_2) { Max=taille_1; Min=taille_2; NbGrand=a; NbPetit=b; } else { Max=taille_2; Min=taille_1; NbGrand=b; NbPetit=a; } for(i=0;i<Min;i++) { s=NbGrand.Chiffres_sign[i]+NbPetit.Chiffres_sign[i]+reste; reste=s/10; s=s%10; somme[i]=s; } for(i=Min;i<Max;i++) { s=NbGrand.Chiffres_sign[Max]+reste; reste=s/10; s=s%10; somme[i]=s; } /* Affichage de l'addition */ for(i=1;i<Max+1;i++) { printf("%d", somme[i]); } }
Est-ce que quelqu'un pourrait m'aider ou me guider ?
Je peux afficher d'autres parties de mon code si besoin.
Merci d'avance !
Partager