voila dans le cadre d'un projet d'info en ecole d'ingenieur je doit realiser un programme qui me permet de travailler avec de tres grands entiers.
pour cela j'utilise les listes chaines ( suite de petits entiers )
je suis arrivé a faire l'addition de deux tres grands entiers:
grandentier plus (grandentier X , grandentier Y, int r)
{grandentier E;int res;
if (X==NULL) E=Y;
else { if (Y==NULL) E=X;
else{
addition(X->valeur , Y->valeur , r ,res );
E=plus(X->suivant , Y->suivant , r);
ajouter (res,E);
}
}
return E;
}
mon probleme se situe dans la soustraction ( probleme de recursivité) j'arrive a faire la soustraction de deux petits entiers:
void soustraction (int x,int y,int &r ,int & res)
{res=x-(y+r);
if ((x-y<=0)){ r=100 ; res=x-y ;}
else {r=0; res=x-y;}
}
mais je n'arrive a rien consernant la soustraction de deux grands entiers donc si qqu'un peut venir me donner de l'aide merci ( et si qqu'un sait faire avec la division et la multiplication je suis egalement preneur))
merci encore
@GuGus963, il résout un exercice, réinventer est ce que l'on attend de lui.
Sinon, tu es obligé de te cogner les listes à la main aussi? Tu n'es pas autorisé à utiliser une std::list ? (structure qui ne me parait pas efficace, mais bon..)
en fait j'ai deux probleme puisque je compter utiliser quasiment le meme prog que pour l'addition ( pour moi addition et soustraction c'est quasi pareil donc bon)
premier probleme
grandentier moins (grandentier X , grandentier Y, int r)
{grandentier E;int res;
if (X==NULL) E=Y;
else { if (Y==NULL) E=-X;
X n'etant pas un entier je ne peux pas mettre E=-X or cela marangerais bien
deuxieme probleme
Si la soustraction de deux petits entiers est negative cela ne va pas lorsque je les met dans la liste chainée. Un exemple expliquera mieux que des mots
soit deux grands entiers X et Y
X= 100 400
Y= 050 800
si je fait le calcul de la soustraction avec les petits entiers separé j'obtiens:
E= X-Y = 50 -400
alors qu'en fait je devrais avoir E= 49600
et je vois pas trop comment resoudre ce probleme ( peut etre trouver un systeme de retenu
Si tu regardes dans la le topic des exercices (en post-it) tu trouveras ton bonheur.
C'est fait à partir des std::vector et c'est pas optimisé mais ça devrait déjà t'aider.
Il est préférable de définir les opérateurs binaires comme des fonctions libre
(pour pouvoir supporter (simplement et proprement) de façon symétrique les opérations faisant intervenir des types différents (en particulier en présence de potentielles conversions implicites)
oui, en fait j'avais cru libre (non proprietaire) et nom libre or classe
grands entiers
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
a quoi sers r?