Les entiers prédéfinis du langage C++ ont une valeur limitée: d'où la notion de GRANDS ENTIERS. Le type "int" en C++ Builder est 32 bits donc ne représente au maximum que 4294967296 et "int64" que 18446744073709551616.
Les grands entiers peuvent contenir des chiffres jusqu'à la limite de la mémoire de votre ordinateur.
Le nombre est donc stocké dans une chaîne de caractère: char *.
Imaginez qu'on alloue un espace de 1000 octets pour ce char * alors l'entier peut contenir donc 1000 chiffres.
Incroyable non!!! Où est int et int64 dans tout ça???
Conclusion :
Les grands entiers sont très utiles en CRYPTOGRAPHIE comme RSA, etc. Si on utilise des types int, le cryptogramme est facilement cassable mais avec des grands entiers, le cassage se fera en une siècle et plus même avec un processus de 10GHz.
Ce code englobe alors une classe GrandEntier qui représente ce nouveau type.
Pour rendre le code encore plus beau:
je travaille actuellement sur l'utilisatin des opérateurs +,-,* au lieu de fonctions comme additionner(a1,a2,a3).
Je précise que je n'ai pas visionné les codes similaires postés sur ce site lorsque
En gros on est plus ou moins au meme point, a la différence que je gere 2-3 trucs de plus que toi:le signe des grands l'operation egalite, inferieur a, la fonction puissance, (que des trucs pas vraiment dur a rajouter en fait), mais surtout le signe des nombres, ce qui demande de rereflechir un peut les algorithmes (surtout pour l'addition en fait)
Faudrait aussi rajouter la division et l'operateur modulo, et eventuellement des nombres de taille un peu plus infinie que 1000 (taille définie au run time via allocations dynamiques) comme tu semble le faire ici, stocker dans une classe et utiliser la surcharge d'operateurs, mais cela releve de l'accessoire, mais meme si pas grand monde utilise des nombre de plus de 1000 chiffres, pour de la cryptographie je suis sur qu'on peut aller jusque la...
bonne continuation
notament ton .h:
class GrandEntier{
int nb_chiffre(char *s);
void inverser(char s[200]);
void zero(char s[200]);
void echanger(char *str1,char *str2);
int plus_grand(char *n1,char *n2);
public:
char * nombre;
GrandEntier();
void addition(char *n1,char *n2);
void sous(char *n1,char *n2);
void multi(char *n1,char *n2);
};
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.