CLASSE POUR TRAVAILLER AVEC DES GRANDS NOMBRES ENTIERS

BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005 - 2 mai 2003 à 16:32
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005 - 18 mai 2003 à 02:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10720-classe-pour-travailler-avec-des-grands-nombres-entiers

BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
18 mai 2003 à 02:03
je serais heureux de voir un algo optimisé pour la division, j'en ai pas trouvé :)
sinon, une retenu de plusieurs cases, je crois voir ce que tu veux dire, je vais etudier ca :)
gordhan Messages postés 19 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 10 juin 2003
18 mai 2003 à 00:18
Salut! juste pour dire que je pense que ton code marche mal avec les soustractions (au cas ou la retenue est a retenir sur plusieurs cases du tableau, ca semble foirer... essaie avec 2^100 - 1). Et sinon jpense que l'algorithme de division est pas optimisé du tout; mais sinon pour ce qui est du reste c'est pa mal. jvais essayer dfaire une classe pour les tres gds entiers, et rapide avec la division, on verra skeu ca donne
trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
4 mai 2003 à 15:06
Je ne me rappelle plus la raison exacte pour les opérateurs d'insertions et d'extraction flux, mais c'est cause que l'opérande est droite et c'est aussi une question pour accédeer aux membres. Bon il va falloir que je révise tout ça :)

Pour le tableau je n'avais pas vu private, alors c'est pour ça.

Pour tes test avec l'opérateur + le résultat est meixu (à mon goût) quandla fonction n'est pas friend.
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
4 mai 2003 à 14:18
"Met aussi les fonctionq friend en fonction memebre car ce n'est pas nécessaires pour ces opérateurs." -> apres qq petits tests je me suis rendu compte que :

friend bint operator+(const bint &a, const bint &b); -> renvoit a + b
bint operator+(const bint &a); -> renvoit *this + b
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
4 mai 2003 à 14:10
merci pour ces critiques en tout cas :)
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
4 mai 2003 à 14:09
pour l'allocation dynamique du tableau, j'y avais pensé, je ferais ca p-e plus tard (pour l'instant le but 1er etait d'avoir qqchose qui marche et pas trop trop dégueulasse lol). j'ai vu que dans certain cas, la division est vraiment longue a calculer (ca peut direr environ 1 min)

"Par contre ça l'est pour surcharger les opérateurs << et >>." -> ah ??? pourquoi ? pourtant ils ont la mm tête que les autres :p

"Par contre du devrais lettre le tableau en private" -> il y est déjà !
trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
4 mai 2003 à 11:51
c cool les opérateurs sont surchargés. Par contre du devrais lettre le tableau en private et en faire un pointeur. Le constructeur allouera dynamiquement la mémoire pour le pointeur. Ainsi ta classe sera plus souple puisque tu aura la possibilité de redimensionner le nombre si il devient trop grand.

Le union en C++ c'est pas top, tout comme le define de bint_size. Remplace le par
const int bit_size
Le qualificatif const est plus sûr qu'un define. Car si je j'insère la ligne
#define bit_size 9 dans bint.cpp ton programme ne marchera pas correctement. Alors que avec const ce risque n'existe pas car le compilateur renverra un message d'erreur.

Met aussi les fonctionq friend en fonction memebre car ce n'est pas nécessaires pour ces opérateurs. Par contre ça l'est pour surcharger les opérateurs << et >>.
BlackGoddess Messages postés 338 Date d'inscription jeudi 22 août 2002 Statut Membre Dernière intervention 14 juin 2005
2 mai 2003 à 16:32
j'ai oublié de préciser qq contraintes :
cette classe ne fonctionne que :
- sur un système BigEndian
- si lorsqu'on utilise l'opérateur de décalage de bits >>, le bits ajouté est un 0 (je ne sais pas si ca fait partie du standard, alors je préfère préciser)
Rejoignez-nous