TOUR DE MAGIE

Signaler
Messages postés
3838
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
-
Messages postés
4
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
22 décembre 2007
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51013-tour-de-magie

Messages postés
4
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
22 décembre 2007

Voila ce que ça donne :

static char* CarteType[] = {"Carreau", "Coeur", "Pique", "Trefle"};
static char* CarteVal[] = {"As", "Deux", "Trois", "Quatre", "Cinq", "Six", "Sept", "Huit", "Neuf", "Dix", "Valet", "Dame", "Roi"};


int nb = 27; // Nombre saisi

nb -= 26;
int type = nb % 10;
int valeur = (nb - type) / 10;

if (type >= 0 && type < (sizeof(CarteType) / sizeof(char*)) && valeur >= 0 && valeur < (sizeof(CarteVal) / sizeof(char*)))
printf("***Votre carte est %s de %s***!\n", CarteVal[valeur], CarteType[type]);
else
printf("Désolez votre nombre ne correspond à aucune carte !\n");


(sizeof(CarteType) / sizeof(char*)) = nombre d'élément dans CarteType
Messages postés
4
Date d'inscription
mardi 1 juillet 2003
Statut
Membre
Dernière intervention
22 décembre 2007

On peu faire deux tableaux associatifs.
Le premier contiendrait carreau, coeur, ...
Le deuxième contiendrait As, Deux, Troix, ...

On aurait plus qu'à faire résultat = résultat - 26
Le modulo 10 donnerait directement l'index du premier tableau (si compris entre 0 et 3)
[(résultat - résultat modulo 10) / 10] donnerait directement l'index du deuxième tableau (si compris entre 0 et 12)
Messages postés
3838
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
La source section source est là pour poster des codes techniquement intéressant ou pédagogique. Elle n'est pas là pour accueillir le premier programme des débutants, fier de montrer qu'ils savent à peu près bidouiller.
Si tu veux montrer ton code, c'est plutôt sur le forum qu'il faut aller. Tu mets en sujet: "Critiquer mon code".

Le code est pas terrible, il y a énormément de redondance. C'est peu intéressant techniquement puisque c'est uniquement une suite de if.

Il aurait été plus judicieux de réaliser un tableau associatif.

typedef struct
{
int num;
char* nom;
} carte;

static const carte[] =
{
{26, "As de carreau"},
etc...
{149, "Roi de trèfle"},
0
};

nb = nombre entré par l'utilisateur
int i = 0;
while (carte[i] && carte[i] != nb)
++i;
if (!carte[i])
printf("Désolez votre nombre ne correspond à aucune carte !\n");
else
printf("***Votre carte est %s***!\n", carte[i]);