Programme étoile

ibtihel -  
 ibtihel -
Bonjour,

je doit programmer un programme qui prend comme entrée un mot et la rendre en sortie écrite a l'aide des étoiles
pouvez vous me donner une idee pour commencer a programmer
MERCIIIIIIIIII
exemple:
E----------> ***
**
***

3 réponses

cedric_ Messages postés 188 Statut Membre 43
 
Bonjour,

pour commencer, il faut créer un tableau de 26 éléments permettant de coder l'emplacement des étoiles dans le carré qui délimite le caractère

Par exemple si chaque caractère est en 3*3 (ton exemple), les éléments peuvent être codées sur 3 octets (1 octet par ligne). Tu choisis 3 bits (par exemple de poids faible) pour coder s'il y a une étoile ou non à chaque emplacement.

Une fois que la convention est fixée, tu calcules la valeur des octets et tu crées un tableau de constantes avec les valeurs calculées.

ensuite, pour chaque lettre, tu calculera son indice dans le tableau (en soustrayant la valeur ASCII de la lettre A), ce qui te donnera les emplacement des étoiles pour chaque ligne de la lettre. Avec ça, tu remplis les lignes une par une et tu les affiches à la fin.

Si ton code doit être insensible à la casse (majuscule/minuscule), il faudra affiner la recherche de l'indice du tableau.

Cédric
0
ibtihel
 
Merci beaucoup
mais j'ai pas bien compris comment je veux calculer la valeur des octets
0
chico200987 Messages postés 856 Statut Membre 144
 
La seule alternative que je vois, c'est un tableau 2 dimensions de taille 26 contenant dans la premiere dimension, la lettre, et dans sa deuxieme dimension, un autre tableau (celui qui aura les etoiles) 2 dimensions de taille 3 contenant les etoiles..

Le tableau d'etoile sera de cette forme :

*****
*****
*****

Exemple :

Dans monTab[0][0] tu as "A"
Dans monTab[0][1] tu as monAutreTab

Pour afficher :
*
**
* *
Tu auras :

monAutreTab[0][0] = " ";
monAutreTab[0][1] = " ";
monAutreTab[0][2] = "*";
monAutreTab[0][3] = " "
monAutreTab[0][4] = " ";

monAutreTab[1][0] = " ";
monAutreTab[1][1] = "*";
monAutreTab[1][2] = "*";
monAutreTab[1][3] = ""
monAutreTab[1][4] = " ";

monAutreTab[2][0] = "*";
monAutreTab[2][1] = " ";
monAutreTab[2][2] = " ";
monAutreTab[2][3] = " "
monAutreTab[2][4] = "*";

Etc... Enfin, gros travail manuel, en dur et qui ne sert a rien mais je ne vois pas d'autre maniere..
0
cedric_ Messages postés 188 Statut Membre 43
 
en fait, Chico a une idée intéressante à retenir. Pourquoi utiliser des bits quand on peut utiliser directement le code caractère.

Donc le squelette du code pourrait ressembler à ça (en C) :

typdef struct
{
// 1 caractère sur 3 lignes de 3 caractères
char ligne1[3];
char ligne2[3];
char ligne3[3];
} CAR_ETOILE;

const CAR_ETOILE tableau[26] =
{
// A
{
" * ",
"***",
"* *"
},
// B
...
}

avec le code ASCII de la lettre, tu calcules l'indice dans tableau. Tu crées trois buffers (1 pour chaque ligne), tu les remplis par concaténation successive et quand le mot est fini, tu affiches les trois lignes.

Cédric
0
ibtihel
 
merci c'est claire maintenant
MERCII
0