Probleme allocation C++

cs_elite182 Messages postés 6 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 16 mai 2011 - 16 mai 2011 à 14:14
cs_elite182 Messages postés 6 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 16 mai 2011 - 16 mai 2011 à 19:28
Bonjour a tous ,
je dois réaliser une fonction qui range des grands nombres dans un tableau
d'entier, ( ex : 2 333 546 donnera :
Tab[0] = 546;
tab[1] = 333;
tab[2] = 2;

Pour se faire j'ai utiliser mon constructeur comme ceci :

GrandNombre::GrandNombre(int nombre)
{
            _taille = 0;
            _tab = new int [_taille];
           
          int y = nombre;
          while(y > 0)
          {
                    _tab[_taille] = (y - ((y/1000)*1000)) ;
                    y /= 1000;
                    _taille++;
                    _tab = new int [_taille];
          }
  }


Mais a l’exécution celui-ci me donne des résultats complément faux, alors que après des vérification dans la boucle while ; je vois très bien que l'affectation des valeurs a bien marcher...

Quelqu'un pourrai-il m'aider ?

Merci par avance.

4 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
16 mai 2011 à 15:18
Salut

L'allocation dynamique est à revoir complètement...
Ici tu alloues un tableau avec une taille nulle:
_taille = 0;
_tab = new int [_taille];

Donc quand tu fais _tab[_taille] dans ton while, tu écris à un endroit interdit...

_taille = GetSizeFromNumber(nombre); //retourne 3 pour 2 333 566
_tab = new int [_taille];

Puis dans ton while tu supprimes _tab = new int [_taille];

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
cs_elite182 Messages postés 6 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 16 mai 2011
16 mai 2011 à 17:35
Merci de ta réponse rapide !
pour le _taille = 0 , je ne me suis trompe que en recopiant sur le forum, désole.

Mon compilateur ne connait pas "GetSizeFromNumber()" , il faut inclure une bibliothèque particulière ?

a+
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
16 mai 2011 à 19:05
Non GetSizeFromNumber() est une fonction que tu devras écrire qui te donnera le nombre de bloc de 3 chiffres qu'il y a dans un nombre.
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
cs_elite182 Messages postés 6 Date d'inscription mardi 15 mars 2011 Statut Membre Dernière intervention 16 mai 2011
16 mai 2011 à 19:28
D'accord , merci de ton aide !
a+
0
Rejoignez-nous