arbre binaire en c (dictionnaire) - C++ - Programmation
Marsh Posté le 09-11-2002 à 20:11:24
ok... ca sera plus clair, j'espere qu'on pourra m'aider...
Marsh Posté le 09-11-2002 à 20:18:31
bah, en tout concon :
Code :
|
Le tableau est pas terrible, a remplacer plus tard par liste chainée & cie.
Marsh Posté le 09-11-2002 à 20:35:17
ok merci, g encore du mal à manipuler les pointeurs.
une fois qu'on a fait ca, est ce qu'il faut trier les lettres? le a c'est le 1er, le b le 2eme... le z le 26eme?
ouais en fait j'avais une idée de la structure mais le prog... hum hum
dc si on a un truc genre
Code :
|
pr arriver au r de bor, il faut A->fils[2]->fils[15]->fils[18] ?? desolé je m'y perds un peu...
Marsh Posté le 09-11-2002 à 20:41:41
heuh, tu sais, la structure interne, t'en fais ce que tu veux. tu peux effectivement considerer que le 0 c'est 'a', le 1 'b' etc etc, mais c toi qui choisi. Mais effectivement, c'est le plus simple.
Perso, je rajouterais aussi ca comme ca:
Code :
|
terminal mis a 0 si non terminal, 1 si terminal
(pour pas que "bo" soit reconnu comme un mot alors que "bord" est dans l'arbre)
l'insertion, tu peux la voir comme ca:
Code :
|
Marsh Posté le 09-11-2002 à 22:11:53
merci bcp à toi chris!!
maintenant il me reste plus qu'à comprendre
le fait que t'aies mis 2 fois arbre et 2 fois c pour des choses differentes me perturbe un peu mais merci bcp pr les explications!!
g pa trop compris ce qu'etait fils[c] etant donné que c est une lettre, pas un chiffre, à moins que la fonction tolower renvoie l'equivalent ascii de la lettre minuscule ???
enfin merci!
Marsh Posté le 09-11-2002 à 22:14:54
vanik a écrit a écrit : merci bcp à toi chris!! maintenant il me reste plus qu'à comprendre le fait que t'aies mis 2 fois arbre et 2 fois c pour des choses differentes me perturbe un peu mais merci bcp pr les explications!! |
plait il ?
je vois pas trop ton pb
edit : ah, si et ca te perturbe a raison :
Code :
|
n'est pas valide (eg arbre etant un type il ne peut plus etre utilisé comme nom de variable). Bref, remplace l'un ou l'autre par autre chose
vanik a écrit a écrit : g pa trop compris ce qu'etait fils[c] etant donné que c est une lettre, pas un chiffre, à moins que la fonction tolower renvoie l'equivalent ascii de la lettre minuscule ??? enfin merci! |
mdr, j'ai fait n'imp
ouaip, tolower renvoie l'equivalant minuscule, mais ca reste une lettre, pas un chiffre.
bref 'a' ne sera pas egal a 0 comme le code que g posté suppose
Donc :
Code :
|
(que de faute dans un truc aussi petit, j'ai honte )
Marsh Posté le 09-11-2002 à 22:17:16
au fait, un arbre binaire c un arbre qui a que deux fils, ce qui n'est pas le cas la
Marsh Posté le 09-11-2002 à 22:26:51
chrisbk a écrit a écrit : au fait, un arbre binaire c un arbre qui a que deux fils, ce qui n'est pas le cas la |
oui biensur, c t pr voir si qqn suivait!
bravo!
dc du coup, qd on fait c = c-'a', c est un chiffre maintenant c'est ca? c'est égal à val ascii de c - val ascii de a ? à cause du - 'a', c'est ca? arrrg g du mal
Marsh Posté le 09-11-2002 à 22:30:40
vanik a écrit a écrit : oui biensur, c t pr voir si qqn suivait! bravo! dc du coup, qd on fait c = c-'a', c est un chiffre maintenant c'est ca? c'est égal à val ascii de c - val ascii de a ? à cause du - 'a', c'est ca? |
oué, bon un char, c'est tout d'abord un entier codé sur seulement 8octet. Ensuite on utilise le codage ASCII pour faire correspondre une lettre a un chiffre. ok ? Ceci dit, il faut aussi savoir que 'a' n'a pas pour valeur 0, et que les types qui ont fait l'ascii ont eu la bone idée de ranger tout ca par ordre alphabétique (genre, 'a' = 15 (au hasard, je connais plus la vraie valeur) alors 'b'=16)
c'est pour ca que quand je fais :
c = c -'a'
je me retrouve avec l'indice correct pour aller chercher le fils suivant dans mon tableau (0 pour a, 1 pour b, 2 pour c etc etc etc)
ok?
Marsh Posté le 09-11-2002 à 22:42:58
ok c donc bien c'que j'avais compris. merci à toi.
par contre je crois que le char est codé sur 1 octet, soit 8 bits, soit 2^8=256 valeurs possibles (d'où 256 valeurs ascii).
merci bcp pr ton aide !!!!!!!!!
Marsh Posté le 09-11-2002 à 22:48:57
"le type char est codé sur 8octets"
bon, je vais me coucher, dire des conneries pareilles spa possible
Marsh Posté le 09-11-2002 à 23:01:57
vanik a écrit a écrit : ok... ca sera plus clair, j'espere qu'on pourra m'aider... http://vanik187.free.fr/Divers/Arbre.jpg |
Bon maintenant que t'as fait le dessin, c'est évident, non ?
Marsh Posté le 09-11-2002 à 23:34:56
verdoux a écrit a écrit : Bon maintenant que t'as fait le dessin, c'est évident, non ? |
LOL
booaah y'a evident et evident
disons qu'entre faire le dessin (que j'avais deja fait) et faire le programme y'a qq pas... g t pas sur s'il fallait à chaq fois creer 26 fils ou si y'avait pas un moyen pr creer des fils de façon "dynamique" (en creer un à chaq fois qu'on ajoute une lettre). d'ailleurs c toujours pas tres clair, mais bon ca viendra.
Marsh Posté le 10-11-2002 à 01:28:02
En anglais...
"tree" veut dire arbre.
"bit" veut dire... bit.
"byte" veut dire octet (codet en fait, mais ne chipotons pas).
Marsh Posté le 09-11-2002 à 19:02:49
salut à tous,
je debute et je dois faire un "trie" en c, mais j'arrive pas à comprendre comment faire.
le programme doit trouver si un mot fait partie du trie, doit pouvoir ajouter un mot au trie, lister le trie et dire si un mot est prefixe dans le trie.
typiquement, on a affaire à 1 structure avec comme 1ere composante des caracteres et comme 2eme composante...?????
des pointeurs sur pointeurs sur la structure??? des pointeurs sur quoi s'il vous plait
disons qu'à la racine on ait : a | . et b | .
a | .
. pointe sur : l | . et r | . et m | . par exemple
le pointeur du r | . doit pointer à son tour vers b | . et r | . par exemple......
b | .
. pointe sur : o | . et e | . par exemple
le . de o | . doit pouvoir pointer sur l | . et n | . et r | . par exemple....
de façon à avoir des mots (bol, bon, bonjour, allo, arbre, arreter....)
je suis pas clair du tout, mais c parce que c pas tres clair ds ma tete! et c pas facile de representer ca sur ordi...
PLIZ HELP ME JE SUIS DS LA *****
merci bcp de m'aider.
ce message pourrait aussi avoir sa place ds la sous-catégorie algo mais bon, le prog doit etre en C...