Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[C] char* -> nombre


Messages recommandés

Posté(e)

Non, ca ne marche pas comme ca... c en ascii qu'il faut faire ca...Ainsi BCA sera différent de ABC ...

Exemple de checksum:

 

/*Ecriture du checksum*/

ptr_buff = &tableau[0];

j= taille_tableau + 1; /*+1

pour le cas ou la taille est impaire*/

 

for (j = j/2;j;j--)

{

checksum ^= *ptr_buff++;

}

 

(je te fais ca rapide, suis en train de préparer ma soutenance...)

Posté(e)

leneuf22 : pourquoi ne pas travailler sur un arbre d'index au lieu d'une liste chainée ?

 

Tu mets tes chaines dans un arbre n-aire :

- chaque niveau correspond à l'index d'une lettre dans la chaine

- chaque lettre correspond à un noeud

- les feuilles correspondent aux pointeurs vers l'enreg correspondant à ta chaine

 

Automne

Posté(e)

Pfiouuu, c'est pas de la tarte (c'est mon tout premier arbre :P )

2 heures rien que pour faire la fonction d'ajout de chaînes !

 

J'avais juste une question :

J'ai un pointeur void (void*), qui peut pointer vers 2 types différents.

Est-ce que je peux différencier mes 2 types par une variable qu'ils ont en commun ?

(les types ont une variable "int efg")

 

Donc, est-ce que je peux me bricoler une espèce de polymorphisme "maison" en faisant

if(pVoid->efg > 1) {...}

else {...}

 

pour différencier les 2 types ? (ou si il y a un truc du style IsKindOf je suis preneur !)

Posté(e)

Alors tu peux en effet utiliser ce que tu veux mais il faut absolument que le champ se trouve à la meme position mémoire dans les 2 structures. Le mieux est de mettre les champs communs en entete de la structure comme ca pas de sousis.

 

Par contre comme c'est un pointeur void, tu devras certainement "caster" ton pointer pour lui donner un type. Parce qu'un pointeur void n'ayant pas de type, tu ne peux pas utiliser pVoid->efg pour récupérer les données de ta structure.

 

Si c'est juste un int que tu récupères pour faire la différence, tu le places en début de structure dans les 2 cas et tu peux essayer ca :


int efg = *((int *)pVoid); /* tu castes ton pointeur void en pointeur sur int et tu renvoies la valeur pointée avec l'etoile devant le cast */



if (efg > 1) {...}

else {...}

 

Pour les arbres, travailles en recursif tu verras ca simplifie grandement les choses puisque tu n'as à t'occuper que d'un seul niveau.

 

Automne

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...