Langage C - help !

la_commu_qui
2021-09-12 19:02:51

Imaginons que j'ai 2 choses :

d'un côté une structure :
struct Piece{
char couleur;
union typeP {
struct Roi roi;
struct dame dame;
struct Tour tour;
} typep;
};

de l'autre un simple tableau de caractère :
char grille[100]

Imaginons que je sache qu'a mon index grille[60] j'ai la valeur destruct piece.type.roi.nom (qui est un caractère)

Comment je fait à partir de cette case de mon tableau pour récupérer un pointeur sur ma structure piece de départ ? (sachant que j'ai un caractère qui appartient entre guillement à cette structure)

en C

[EmileRousseau]
2021-09-12 19:04:42

Rtfm

C0mplautiste
2021-09-12 19:05:20

C quoi ?

la_commu_qui
2021-09-12 19:05:21

Le 12 septembre 2021 à 19:04:22 :
Mets la structure dans ton tableau.
Si tu as juste la valeur c'est impossible.

Piece grille[60];

t'es sur c'est impossible ? même avec des pointeurs ?
genre l'adresse mémoire de mon caractère doit pas être loin de ma structure non ?

C_PlusPlus
2021-09-12 19:06:17

Bah tu fais un tableau de pointeur…

la_commu_qui
2021-09-12 19:07:28

Le 12 septembre 2021 à 19:06:17 :
Bah tu fais un tableau de pointeur…

faut pas changer l'énoncer :)

tokpela
2021-09-12 19:07:58

Le 12 septembre 2021 à 19:05:21 la_commu_qui a écrit :

Le 12 septembre 2021 à 19:04:22 :
Mets la structure dans ton tableau.
Si tu as juste la valeur c'est impossible.

Piece grille[60];

t'es sur c'est impossible ? même avec des pointeurs ?
genre l'adresse mémoire de mon caractère doit pas être loin de ma structure non ?

Avec un bricolage de l'enfer, ça doit être possible, mais il a raison : c'est la manière de faire la plus optimale

musipucix
2021-09-12 19:11:07

effectivement vu la gueule de l'énoncé je pense qu'il faut que tu calcules l'écart entre ta valeur et la case en mémoire qui pointe vers ta struct. Une fois que t'as cet écart il suffit de soustraire (ou ajouter je sais plus :hap: ) l'écart à ton pointeur et le tour est joué :hap:

la_commu_qui
2021-09-12 19:12:09

Le 12 septembre 2021 à 19:11:07 :
effectivement vu la gueule de l'énoncé je pense qu'il faut que tu calcules l'écart entre ta valeur et la case en mémoire qui pointe vers ta struct. Une fois que t'as cet écart il suffit de soustraire (ou ajouter je sais plus :hap: ) l'écart à ton pointeur et le tour est joué :hap:

et du coup une idée de comment faire ? :rire:

JuliaHolter4
2021-09-12 19:14:21

bah tu stockes sur chaque case de ta grille , le nom de la piece , et l adresse memoire de la piece , de rien au revoir

la_commu_qui
2021-09-12 19:15:43

Le 12 septembre 2021 à 19:14:21 :
bah tu stockes sur chaque case de ta grille , le nom de la piece , et l adresse memoire de la piece , de rien au revoir

malaise

PuceauDeLatome
2021-09-12 19:16:10

Le tableau est de quel type, detail de struct Roi ?https://image.noelshack.com/fichiers/2019/01/3/1546468106-cr7-miroir-zoom.png

tokpela
2021-09-12 19:21:08

D'ailleurs pourquoi vouloir stocker ça sous forme de texte ? Autant faire une fonction qui convertit une variable de type Piece en char* ...

la_commu_qui
2021-09-12 19:21:10

Le 12 septembre 2021 à 19:16:10 :
Le tableau est de quel type, detail de struct Roi ?https://image.noelshack.com/fichiers/2019/01/3/1546468106-cr7-miroir-zoom.png

tableau de char
concernant la struct roi : struct Roi {
char nom;
char *deplacement;
};

la_commu_qui
2021-09-12 19:22:08

Le 12 septembre 2021 à 19:21:08 :
D'ailleurs pourquoi vouloir stocker ça sous forme de texte ? Autant faire une fonction qui convertit une variable de type Piece en char* ...

le tableau correspond à ma grille que j'ai affiché, donc avec plein de '.'

LaChanceDeHarry
2021-09-12 19:22:37

Bah soit t'as une structure pour convertir le nom vers le pointeur souhaité soit tu peux pas quoi :(

AtomeVengeur
2021-09-12 19:24:07

à partir de ta valeur tu ne peux pas récupérer l'adresse de son contenant.
Le fait que tu ais affaire à un tableau ne change rien, si je te dis int a = 5; avec la valeur 5 tu ne peux pas retrouver &a.

la_commu_qui
2021-09-12 19:25:04

Le 12 septembre 2021 à 19:24:07 :
à partir de ta valeur tu ne peux pas récupérer l'adresse de son contenant.
Le fait que tu ais affaire à un tableau ne change rien, si je te dis int a = 5; avec la valeur 5 tu ne peux pas retrouver &a.

ah ok merde :snif2:
AHIII j'ai coder tout un jeu d'échec pour au final me faire baiser sur la fin

toutes mes fonctions prennent un paramètre de type "piece" :rire:

"faisons l'interface utilisateur pour la fin" :rire2:

selection naturelle

PuceauDeLatome
2021-09-12 19:25:48

Le 12 septembre 2021 à 19:21:10 :

Le 12 septembre 2021 à 19:16:10 :
Le tableau est de quel type, detail de struct Roi ?https://image.noelshack.com/fichiers/2019/01/3/1546468106-cr7-miroir-zoom.png

tableau de char
concernant la struct roi : struct Roi {
char nom;
char *deplacement;
};

Donc le nom de de la pièce est uniquement un char et n'est pas une référence aux char de grille. Du coup, tu dois faire une recherche iterative sur ton tableau de Piecehttps://image.noelshack.com/fichiers/2019/01/3/1546468106-cr7-miroir-zoom.png

la_commu_qui
2021-09-12 19:27:02

Le 12 septembre 2021 à 19:25:48 :

Le 12 septembre 2021 à 19:21:10 :

Le 12 septembre 2021 à 19:16:10 :
Le tableau est de quel type, detail de struct Roi ?https://image.noelshack.com/fichiers/2019/01/3/1546468106-cr7-miroir-zoom.png

tableau de char
concernant la struct roi : struct Roi {
char nom;
char *deplacement;
};

Donc le nom de de la pièce est uniquement un char et n'est pas une référence aux char de grille. Du coup, tu dois faire une recherche iterative sur ton tableau de Piecehttps://image.noelshack.com/fichiers/2019/01/3/1546468106-cr7-miroir-zoom.png
C'est bien de la merde nonobstanthttps://image.noelshack.com/fichiers/2019/01/3/1546468106-cr7-miroir-zoom.png

non, je gère la chose autrement, j'ai jamais besoin de rechercher dans mon tableau

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    Partenaire: JVFlux
    Ce site n'est pas associé à Jeuxvideo.com ou Webedia. Nous utilisons seulement des archives publiques.
    Il est inutile de me spammer par e-mail pour supprimer un topic. Au contraire, en conséquence, je mettrais votre topic dans le bloc ci-dessous.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.