Aide morse

Signaler
Messages postés
86
Date d'inscription
mercredi 1 novembre 2000
Statut
Membre
Dernière intervention
21 janvier 2009
-
Messages postés
44
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
19 décembre 2013
-
bonjour a tous
je dois faire un programme qui changer les lettres normal en morse et inversement

voici le debut  de mon code

# include <stdio.h>
# include <string.h>
# include <conio.h>


struct morse
{
       char caract;
       char carmorse[7];
       }




main()
 {
 
struct morse table [37] = {'a',".-",'b',"-...",'c',"-.-.",'d',"-.. ",'e',".",'f',"..-.",'g',"--.",'h',"....",'i',".."
                     ,'j',".---",'k',"-.-",'l',".-..",'m',"--",'n',"-.",'o',"---",'p',".--.",
                     'q',"--.-",'r',".-.",'s',"...",
                     't',"-",'u',"..-",'v',"...-",'w',".---",'x',"-..-",'y',"-.--",'z',"--..",'0',"-----",
                     '1',"----",'2',"..---",'3',"...--",
                     '4',"....-",'5',".....",'6',"-....",'7',"--...",'8',"---..",'9'," ----.",'.',".-.-.-",' ',"????"};
 
}
char phrase;


printf ("sasir la phrase a trahuir en morse ");
gets (phrase);

et aprés je seche
merci de votre aide

15 réponses

Messages postés
64
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
1 juillet 2010
2
Yo cobra176,

pourtant tu es très bien partit. Tu as d'un coté une table de traduction que tu as appelé morse, et de l'autre une phrase à traduire. il est vrai que c'est plus compliqué d'aller du morse à l'alphabet. Fait d'abord l'inverse, une phrase en français en morse, puis tente l'inverse. passe du morse en français, la je t'aiderai (si je le peux bien sur....)

Mad_Love_Disease
Messages postés
14980
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
1 mars 2021
94
Pour info, "char phrase" veut dire que "phrase" est un caractère, et non pas une chaine de caractères.
par exemple, si tu veux une chaine de 250 caractères, il te faudra déclarer phrase comme ceci:
char phrase[251]; /* +1 pour ne pas oublier le caractère de fin de chaine */

Une fois que tu auras récupérer la chaine saisie par l'utilisateur, tu la parcours et, pour chaque lettre, tu vas chercher le code morse correspondant.

Bon courage

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

Moi je ferais comme ça:
Du français vers le morse : pour chaque lettre du mot (phrase[0], phrase[1], ...) tu cherches l'équivalent en morse dans ta table.
Du morse vers le français : je suppose qu'il y a un espace entre chaque symbole morse représentant une lettre, donc tu parses la chaine phrase en fonction des espaces et ensuite tu convertis les lettres morse en français.
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
9
Et ton tableau "morse" est mal déclaré, il faut rajouter des accolades autour des membres de la structure.
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

Elles y sont les accolades.
En quoi est-il mal initialisé ???
Par contre il manque le point virgule à la fin de la définition de la structure, non ???
Messages postés
295
Date d'inscription
dimanche 4 mai 2003
Statut
Membre
Dernière intervention
6 décembre 2010

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string>
using namespace std;




int main(int argc, char *argv[])
{
 char Car[38]={'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0',
'1','2','3','4','5','6','7','8','9','.',' '};

char * table[38]  =  {".-","-...","-.-.","-..",".","..-.","--.","....","..",
                     ".---","-.-",".-..","--","-.","---",".--.",
                     "--.-",".-.","...",
                     "-","..-","...-",".---","-..-","-.--","--..","-----",
                     "----","..---","...--",
                     "....-",".....","-....","--...","---.."," ----.",".-.-.-"," "};


char  p[250];
unsigned short i;
unsigned short j;
unsigned short k;


printf ("sasir la phrase a trahuir en morse:");
printf ("\n");
gets(p);
i=strlen(p);


for(j=0;j<i;j++){


 for (k=0;k<38;k++){
  if (p[j]==Car[k]){
printf (table[k]);
  }
 }


}
printf ("\n");
system("pause");
  return 0;
}
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
9
struct morse table [37] = {{'a',".-"},{'b',"-..."},{'c',"-.-."} .... {' ',"????"}};

Comme ça c'est mieux dans la syntaxe.

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
Messages postés
429
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
12 janvier 2008

Mais ce n'est pas obligatoire, n'est ce pas ???
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
Une idée pour t'aider!
Je pense que tu devrai rajouter le nombre de caractére de chaque signe morse!
Ensuite récupère le nombre de caractère entré pour la phrase a convertir(pour les boucles a faire (avec for(int a=0....)
Tu fait une première boucle  sur la chaine entrée,pour calculer la taille du "char" qui te servira a afficher ta conversion(ex: a=2,b=4...)
Tu créé le "char"
(ex:
char *Texte_traduit;
Texte_traduit= new char[nb_carac];
)
la deuxième boucle effectue la copie de chaque "carmorse" vers Texte_traduit.
Grace à strcpy et strcat.

Voilà j'éspère t'avoir mis sur la voie et surtout été compréhensible.
@++
Messages postés
64
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
1 juillet 2010
2
Ils ont tous raisons sur les points de syntaxe, quant à la traduction du morse vers le Français, un problème peut se poser.
Si des espaces séparent les séquences de tirets et de points tu pourra facilement faire la traduction à l'inverse. Si ce n'est pas le cas, alors la traduction ne me semble pas possible

Exemple:
tu as la chaine TE et la chaine N
la traduction en morse te donne -. pour TE
 ainsi que -. pour N

si tu as la code morse -. a traduire, vas tu choisir N ou TE? Tu as besoins des expaces.....

Mad_Love_Disease
Messages postés
14980
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
1 mars 2021
94
tibob51> Que Nenni! T'en foutrait moi des boucles pour convertir une chaine!! Bonjour les perfo!
Bon, plus sérieusement, je ne vois pas les problèmes qu'il peut y avoir...si on fixe des hypothèses:
- pour la chaine morse, il faut impérativement des séparateurs entre chaque "lettre"
- il faut une chaine de caractères de référence: "abcdef...."
- il faut une chaine de "caractères morses" de référence, changée dans le même ordre que le précédent

Pour le passage ASCII->Morse:
- parcourir la chaine saisie par l'utilisateur à l'aide d'un pointeur
- si la variable pointée par le pointeur est différente du caractère de fin de chaine, mettre dans la chaine de sortie le caractère morse correspondant au caractère pointé

Pour le passage Morse->ASCII:
- parcourir la chaine saisie par l'utilisateur à l'aide de 2 pointeurs (un pour le début de caractère, un pour la fin)
- init: positionner les 2 pointeurs au début de la chaine saisie
- step:
  - déplacer le 2nd pointeur jusqu'à rencontrer un séparateur ou le caractère de fin de chaine
  - rechercher, dans la référence morse, l'index de la chaine se trouvant entre les 2 pointeurs
  - copier dans la chaine de sortie le caractère ASCII correspondant
  - déplacer le 1er pointeur au début du caractère suivant

J'espère que j'ai été clair, et que je n'ai pas fait de faute. Perso, c'est comme ça que je ferais.
Bon courage...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,

Juste une question, cela doit être obligatoirement en C ou alors tu peux le faire en C++ ???

Matt...
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
buno>Ben j'ai donné une version qui est plus adaptée en mode fenétré,c'est a dire je créé ma variable pour l'afficher ensuite dans un label ou ce que tu veux (je dois donc connaitre sa taille)d'où la première boucle, puis la deuxième pour ecrire dedans.
Sinon sur qu'en mode console ya qu'a faire faire afficher les carractères correspondants.
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,

Ben alors cobra176, j'ai l'impression que tu as posé une question et que tu te contrefiches royalement des réponses apportées...
Un "Ok, merci pour vos réponses", pas pour la mienne car c'était une question, mais pour les autres intervenants ou alors, "c'est bon, j'ai trouvé" ou bien répondre aux questions qui t'ont été posées pour t'aider ... Ca serait un minimum.

Matt...
Messages postés
44
Date d'inscription
jeudi 16 mars 2006
Statut
Membre
Dernière intervention
19 décembre 2013
1
alors deja merci a cobra176 davoir mis ce sujet sur le forum pkil ma servi g le mm exo a faire en c é jétai bloké pr laffichage de la traduction. bref moi g un pti pb g fai com lui la declaration de mon tableau de structure (et com vs lavez indiké) sauf kil me met une erreur : "two or more data types in declaration of 'tabmorse' "       (tabmorse etant le nom de mon tableau de structure)
merci davance pr les reponses ki y seront apportées!