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
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 ) l'écart à ton pointeur et le tour est joué
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 ) l'écart à ton pointeur et le tour est joué
et du coup une idée de comment faire ?
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
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"
"faisons l'interface utilisateur pour la fin"
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