Probleme allocation C++

Signaler
Messages postés
6
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
16 mai 2011
-
Messages postés
6
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
16 mai 2011
-
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

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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.
Messages postés
6
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
16 mai 2011

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+
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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.
Messages postés
6
Date d'inscription
mardi 15 mars 2011
Statut
Membre
Dernière intervention
16 mai 2011

D'accord , merci de ton aide !
a+