Soustraction de deux entier

Résolu
amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 - 31 janv. 2009 à 19:44
amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 - 2 févr. 2009 à 00:05
Salut
j'ai un entier comme ca

int *entier1=new int[2];  11111111 222222222
int*entier2=new int[3];  11111111 222222222 111111111
lors d'une soustraction
for(int i=2;i<=0;i--)
entier2[i+1]=entier2[i+1]-entier1[i];

la resultat est
11111111 11111111 -
111111111
je veux que le moin desparu
j'ai esayé unsigned mais ca na pas marché
si quelsun a une idée
MErci

% Mauvais Sens %

2 réponses

uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
1 févr. 2009 à 11:53
Salut,
Déjà, je doute que ta boucle fonctionne : for(int i=2;i<=0;i--)
Déclarée comme ça, aucune passage dans cette boucle ne sera effectué (mais on va supposer que c'est une erreur de frappe).
Sinon l'algo de ta soustraction est assez naze, car faux :
- 1er passage dans la boucle, tu calcules entier2[3], or il n'y a que 3 cases (la dernière étant donc entier2[2] puisque la numérotation commence à 0)
- 1er passage toujours, tu calcules entier1[2], or il n'y a  que 2 cases (la dernière étant donc entier1[1] puisque la numérotation commence à 0)

Ce problème explique donc ton signe négatif :
on a (en imaginant >= au lieu de <= dans la boucle) :
11111111 222222222
11111111 222222222 111111111
- 1er passage : - = se range dans la case -> inutile
- 2eme passage : 111111111 - 222222222 = 111111111 se range dans la dernière case de entier2[]
- 3eme passage : 222222222 - 111111111 = 111111111 -> se range dans la deuxième case de entier2[]
fin de la boucle
la première case de entier2[] n'ayant pas été modifiée, elle garde sa valeur 11111111.
On obtiens donc pour entier2[] : 11111111 11111111 -11111111

Ton algo est donc à refaire. Mais je ne vais pas te donner la réponse. Déjà que tout ce que je t'ai dit là, c'était à toi de le faire (un programmeur est censé être capable de suivre l'évolution de ses variables au cours du programme, on apprend ça avant même d'apprendre à programmer)

Sinon, tu t'es trompé de rubrique : ton code est en C++, or on est dans la rubrique C

Cordialement, uaip.
3
amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 4
2 févr. 2009 à 00:05
salut
et merci pour la réponse, ta raison dans ce que tu vien de dire
merci encore je vais revoir mon algo,
une chose c'est que j'ai pas copier tous le code j'ai juste esayé de vous expliquer
mon sousi,
concrenant les variable et >=, c'est un autre delire la dans,
si possible je veux tous dabord resoudre le probleme de signe, aprés je passe a l'optimisation et la validation de mon algo
MErci encore

% Mauvais Sens %
0
Rejoignez-nous