180

Pollux :
Je ne vois pas de 6.2.3 confus Tu peux donner le titre?

On parle du standard C là! "6.2.3 Name spaces of identifiers". La citation de Sasume était aussi prise sur le standard C.

Comme déjà dit, le "tag namespace" n'existe pas en C++ et n'est pas mentionné dans le standard C++.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

181

Euh oui j'ai fumé. J'avais relu la citation en pensant que c'était la mienne (celle du C++), alors que c'était celle de Sasume. Evidemment, je me demandais pkoi y avait un "tag namespace" dedans et quelle pouvait être la différence avec le namespace normal triso

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

182

J'ai un petit problème que je ne comprend pas malgré beaucoups de tentatives pour le coriger:

J'ai une focntion qui ce nomme:
int HUFF_CreateTree (H_ASCII *ptr_table, unsigned short DimAscii, H_Noeud *PtrRacine)

Elle demande en paramètre une structure nommé H_Noeud via *PtrRacine.

//Définition d'un noeud
typedef struct Noeud
{
H_Sheet FDroite; //Feuille droite
H_Sheet FGauche; //Feuille gauche
char CodeNoeud [MAXCODE];
} H_Noeud;

Lors de l'appel à la fonction HUFF_CreateTree j'utilise dans le sous programme:

H_Noeud *Racine;
Puis l'appel:
if (!HUFF_CreateTree (Table_ASCII, DimAscii, Racine))...

Tout ce qu'il y a de plus classique or le programme plante on dirais que le sous-programme HUFF_CreateTree n'attribue pas le pointeur qu'il faut à Racine, pourquoi? Je ne procéde pas comme il faut?

Ah oui les fonctions fonctionnent parfaitement, auparavant racine était une variable globale or j'ai changé ça pour la faire passer en variable local.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

183

Tes 2 lignes de codes donnent l'impression que Racine est un pointeur non-initialisé... J'imagine que je me trompe, puisque tu compiles /évidemment/ avec les warnings activés et que TIGCC t'aurait signalé que c'était le cas tongue

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

184

Oui il n'est pas initialisé ce qui est inutile car c'est la fonction HUFF_CreateTree qui lui attribue le pointeur qu'il faut.

Je programme sous DevC++ pas TIGCC.

Voici le code de HUFF_CreateTree pour que ça soit plus clair: //Création de l'arbre int HUFF_CreateTree (H_ASCII *ptr_table, unsigned short DimAscii, H_Noeud *PtrRacine) {   H_ASCII tmp_table;            //Table temporaire   BOOL insert;   int index;   int i,j;      //Parcours les fréquences ASCII par ordre croissant (plus petit au plus grand)   for (i=DimAscii-1; i>0; i--)   {     //Ajoute un Noeud     //Allocation de mémoire     PtrNoeud=((H_Noeud *) malloc (sizeof (H_Noeud)));          //Erreur out of memory     if (PtrNoeud==NULL) return 0;          //Partie droite (plus petite fréquence)     PtrNoeud->FDroite=(ptr_table+i)->donnee;     //Partie gauche (plus grande fréquence)     PtrNoeud->FGauche=(ptr_table+i-1)->donnee;          //Cumul des données     //Ajoute les fréquences     tmp_table.freq=(ptr_table+i)->freq+(ptr_table+i-1)->freq;     tmp_table.donnee.noeud=true;    //C'est un noeud pas une feuille     tmp_table.donnee.U_Sheet.ptr=PtrNoeud;  //Pointeur de noeud          //Reclassement du noeud dans la table     for (j=i, insert=false; (j>0) && (!(insert)); j--)       //Redéfinition de la table ASCII (enleve item)       if ((ptr_table+j-1)->freq < tmp_table.freq)         *(ptr_table+j)=*(ptr_table+j-1);       else {         insert=true;         index=j;}          if (!insert) index=0;          //Combine ASCII     *(ptr_table+index)=tmp_table;   }      //Création du pointeur vers la racine de l'arbre  //Le problème vient de cette ligne  PtrRacine=PtrNoeud;         //Pas d'erreur   return -1; }
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

185

Je programme sous DevC++ pas TIGCC.

DevC++ utilise aussi GCC... Tu n'as pas dû activer les warning et ils ne doivent pas l'être par défaut... Rajoute "-W -Wall" à la ligne de commande, et tu verras que GCC t'engueulera tongue
Oui il n'est pas initialisé ce qui est inutile car c'est la fonction HUFF_CreateTree qui lui attribue le pointeur qu'il faut.

Aïe, y a du boulot neutral Qd une fonction modifie un paramètre, cette modification n'est pas répercutée sur la fonction appelante ("passage par valeur"). Il faut que tu passes _l'adresse_ de PtrRacine, pas sa valeur...

Sérieusement, va lire un bouquin sur le C, même si tu en connais p-ê une bonne partie (et donc tu peux te permettre de le lire un peu en diagonale), ça t'évitera ce genre d'erreurs...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

186

DevC++ utilise aussi GCC... Tu n'as pas dû activer les warning et ils ne doivent pas l'être par défaut... Rajoute "-W -Wall" à la ligne de commande, et tu verras que GCC t'engueulera


J'ai portant ajouter ses commandes et aucuns warning. confus
Aïe, y a du boulot Qd une fonction modifie un paramètre, cette modification n'est pas répercutée sur la fonction appelante ("passage par valeur"). Il faut que tu passes _l'adresse_ de PtrRacine, pas sa valeur...
Sérieusement, va lire un bouquin sur le C, même si tu en connais p-ê une bonne partie (et donc tu peux te permettre de le lire un peu en diagonale), ça t'évitera ce genre d'erreurs...


OK donc ce que tu me dis c'est passer H_Noeud &PtrRacine en argument et dans ma fonction faire ceci: PtrRacine=&PtrNoeud or ça fonctionne pas. Je pige pas ma structure est pointé par un pointeur, il suffit juste de modifier le pointeur non?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

187

geogeo
:
DevC++ utilise aussi GCC... Tu n'as pas dû activer les warning et ils ne doivent pas l'être par défaut... Rajoute "-W -Wall" à la ligne de commande, et tu verras que GCC t'engueulera


J'ai portant ajouter ses commandes et aucuns warning. confus

Pas normal... Et si tu fais "long *p=3;", il te met un warning?

Aïe, y a du boulot Qd une fonction modifie un paramètre, cette modification n'est pas répercutée sur la fonction appelante ("passage par valeur"). Il faut que tu passes _l'adresse_ de PtrRacine, pas sa valeur...
Sérieusement, va lire un bouquin sur le C, même si tu en connais p-ê une bonne partie (et donc tu peux te permettre de le lire un peu en diagonale), ça t'évitera ce genre d'erreurs...

OK donc ce que tu me dis c'est passer H_Noeud &PtrRacine en argument et dans ma fonction faire ceci: PtrRacine=&PtrNoeud or ça fonctionne pas. Je pige pas ma structure est pointé par un pointeur, il suffit juste de modifier le pointeur non?

C'est du C++ ou du C ?
En C, PtrRacine devrait être un "H_Noeud **", et tu devrais le modifier avec "*PtrRacine = blabla"...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

188

soit:

int HUFF_CreateTree (H_ASCII *ptr_table, unsigned short DimAscii, H_Noeud **PtrRacine);

et:
if (!HUFF_CreateTree (Table_ASCII, DimAscii, &Racine))
avec dans HUFF_CreateTree:

*PtrRacine = malloc(n * sizeof(**PtrRacine));
et return (0); si ca foire et autre chose si ca marche

soit:

H_Noeud *HUFF_CreateTree (H_ASCII *ptr_table, unsigned short DimAscii, H_Noeud *PtrRacine);

et:
if (!(Racine = HUFF_CreateTree (Table_ASCII, DimAscii, Racine)))
avec dans HUFF_CreateTree:

PtrRacine = malloc(n * sizeof(*PtrRacine));
et return (NULL); si ca foire et return (PtrRacine); si c bon

tu devrais peut etre faire ce que pollux t'as conseille cheeky
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

189

erf, g pas reload la page avant de poste... crosspost triso
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

190

Pas normal... Et si tu fais "long *p=3;", il te met un warning?


Pas de warning mais une erreur:
297 C:\MESDOC~1\Temps\ComDOS\huffman.cpp
invalid conversion from `int' to `long int*'
C'est du C++ ou du C ?


Bah je préfére faire ça en C mais je viens de faire ce que tu viens de dire et ça focntionne niquel, j'avais pourtant essayé avec H_Noeud **PtrRacine met j'avais dû mettre PtrRacine=*PtNoeud. sad

Merci beaucoups smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

191

geogeo :
J'ai portant ajouter ses commandes et aucuns warning.


geogeo c'est pas pour te faire chier, mais ton orthographe est déplorable... Est-ce que tu pourrais faire un effort ?

So much code to write, so little time.

192

Oui en effet tu as raison, désolé.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

193

geogeo
: Bah je préfére faire ça en C

Alors pourquoi utilises-tu des fichiers .cpp?
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

194

Je sais c'est pas logique mais c'est pour combiner le C++ avec le C et comme je ne connais pas grand chose en C++ je code en C mais j'utilise quelques fonctions du C++.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

195

Mais vu ce que tu fais en C, il vaudrait mieux que tu maîtrises bien le C avant de te mettre au C++... Enfin moi je dis ça, je dis rien smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

196

Oui tu as raison, j'ai beaucoups de lacunes comme l'histoire des structures et j'en passe. J'ai beaucoups de progrès à faire.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.