Comparer des lettres d'une phrase avec celles d'un tableau

dreard Messages postés 4 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 21 février 2005 - 21 févr. 2005 à 19:09
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 - 22 févr. 2005 à 19:10
bonjour a tous,

je dois creer un programme de codage en morse,

pour ce faire il me faut comparer chacune des lettres du message a coder

avec l'ensemble des lettres alphabétiques stockées dans un tableau que j'ai

declaré et en cas d'égalité afficher le code morse correspondant stocké dans

un second tableau egalement déclaré.

à force de chercher de partout me voila bien embrouillé avec les informations

obtenues.

est ce que je dois utilser STRCMP? et quelle syntaxe?

comment definir l'égalité et convertir les lettres en morse?

merci de votre aide.

8 réponses

Cornell711 Messages postés 26 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 20 juin 2005
21 févr. 2005 à 19:25
salut,

Voila mon idée ( je ne connais pas le morse ) : - utiliser une boucle
"for" pour parcourir le message qui est une chaîne de caractères, et
pour chaque caractère, chercher l'équivalent morse dans le tableau de
la manière suivante ( caractere est un char qui contient votre lettre )
:

printf("%s \n", morsetab[caractere]);



comme les caracteres sont simplement en C des entiers sur 8 bits, il
vous faudrait la traduction de A par exemple qui a le code ascii 65 à
la position 65 de votre tableau de morse. Il y aura alors des trous et
de la mémoire gaspillée, mais pour un petit programme le code sera plus
élégant. Je crois que je ne suis pas passé à côté du sujet?!


bonne prog et @+


Cornell.
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
21 févr. 2005 à 19:28
Non pas de strcmp pour des caracteres, c'est a garder pour les chaines.
Tu fais comme ca :

int i = 0;
char morse[256], *c = morse; //ton code morse
char alphabet[26];

while (*c) {
for (i = 0; i < 26; ++i) {
if (*c == alphabet[i]) LA LETTRE CORRESPOND
}
c++;
}

Voila, si tu as un soucis, n'hesite pas a demander.

+2(p - n)
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
21 févr. 2005 à 19:28
oui bien sur strcmp() va te simplifier grandement la tache!!

la syntaxe:

strcmp( chaine de caractere ," ce a quoi tu veux comparer ")

en cas d'egalité strcmp renvoie 0;
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
21 févr. 2005 à 19:35
oui alexman a raison pour un seul caractere c beaucoup plus partique
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dreard Messages postés 4 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 21 février 2005
21 févr. 2005 à 21:25
d'abord merci à tous pour la promptitude de la reponse

seulement voila il s'agit bien d'une chaine de caracteres type char phrase[50]



à comparer avec un tableau contenant les lettres de l'alphabet char alpha[26]



et ensuite en cas d'egalité convertir en morse a partir du tableau char morse[26][6]



la deuxieme dimension etant le nombre max de trait ou point servant au code morse

j'avais bien songé a utiliser un pointeur mais je me suis un peu embrouillé.

je vais quand meme essayer d'exploiter la piste que tu m'as fourni.


et pour strcmp peut tu m'eclairer strcmp(phrase,alpha) en cas d'égalité strcmp

retourne 0 mais c'est apres que je coince , dois-je utiliser return i ou quelque chose

dans ce gout là pour ensuite ecrire une condition pour faire correspondre la phrase

avec le code morse. ce dont la syntaxe est encore un peu floue dans mon esprit fatigué

A+
0
dreard Messages postés 4 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 21 février 2005
21 févr. 2005 à 21:30
une petite question subsidiaire les cours que j'ai (cned)sont pour le c++,

est-ce qu'en c++ on utilise %s et quelle en est sa signification.

merci à tous.
0
Cornell711 Messages postés 26 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 20 juin 2005
22 févr. 2005 à 13:54
salut,
Oui on l'utilise pour désigner les chaînes lors du formattage exemple
printf("%s\n",moncodemorse);
affiche la chaine moncodemorse et va à la ligne;

Cornell.
0
dletozeun Messages postés 546 Date d'inscription vendredi 13 février 2004 Statut Membre Dernière intervention 9 janvier 2008 1
22 févr. 2005 à 19:10
pour strcmp() le test que tu dois faire c'est par exemple :

if(!strcmp( c, "bonjour") )
{
cout<<"vrai"<<endl;
}
else
{
cout<<"faux"<<endl;
}

Si la chaine de caractere c contient "bonjour " alors le programme affiche vrai sinon il affiche faux

Au cas ou tu le saurais pas le ! veux dire la meme chose que ==0

pour pouvoir comparer les lettres de ta phrase une par une il faut utilser un pointeur de type char* qui pointe vers l'adresse d'un emplacement memoire de la taille d'un caractere (un octet)
pour la syntaxe :

char phrase[]="sos";
char* c=phrase; // le pointeur c pointe vers l'adresse du premier caractere
if( *a=='a') //teste si la lettre pointée est bien un 'a'
...

d'ailleurs en passant j'ai une question aussi sur les pointeurs:

si je fais :
char c[]="bonjour";
char*a=c;
a+=2;
cout<<*a; //affiche : n
cout<<a; //affiche: njour;

Pourquoi il m'affiche cela ? j'arrive pas a me l'expliquer...
0
Rejoignez-nous