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

Signaler
Messages postés
4
Date d'inscription
jeudi 16 décembre 2004
Statut
Membre
Dernière intervention
21 février 2005
-
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
-
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

Messages postés
26
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
20 juin 2005

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.
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
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)
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
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;
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
oui alexman a raison pour un seul caractere c beaucoup plus partique
Messages postés
4
Date d'inscription
jeudi 16 décembre 2004
Statut
Membre
Dernière intervention
21 février 2005

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+
Messages postés
4
Date d'inscription
jeudi 16 décembre 2004
Statut
Membre
Dernière intervention
21 février 2005

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.
Messages postés
26
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
20 juin 2005

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.
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
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...