begin process at 2012 05 29 14:11:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

Problème code morse


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème code morse

mardi 27 novembre 2007 à 20:38:18 | Problème code morse

jpv424

Bonjour tout le monde et encore merci pour votre aide
J'ai fait un programme de conversion Code Morse => Français et l'inverse.

De francais à code morse, le programme marche très bien (c'est le case 1)
Par contre pour le case 2, ce que je comprend, c'est qu'il faut utiiser un pointeur qui pointe sur le début de la chaine et un autre qui va s'arrêter à l'espace entre les code morse... Ensuite on les comparent et on affiche les caractères... mais je m'embrouille un peu..

Je vous joint le code, j'espère que vous m'aiderez à le finir ou à l'optimiser...

Merci

# include <stdio.h>
# include <string.h>
# include <conio.h>
# define TAILLE 37

void main(){

    struct code{
        char lettre;
        char *morse;
    };

    struct code table [TAILLE]={
        {'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 ligne [80], car, *d=ligne[0], *f=ligne[' '], a;
    int i,j,test=1, nbl;

    clrscr();

    printf("******************\n");
    printf("*Traducteur Morse*\n");
    printf("******************\n");

    printf("\n1. Francais => Morse");
    printf("\n2. Morse => Francais");
    printf("\n0. Quitter");
    printf("\n\n-> ");

    do{

        switch(getch()){

        case '1':
            printf("\n\n80 caract¦res max. -> : ");
            gets(ligne);
            printf("\n=> : ");

            for(i=0; i<=80; i++){
                  if(ligne[i]=='\0') break;
                  if(ligne[i] <= 122 && ligne[i] >= 97) ligne[i]-=32;
                  else ligne[i];
            }

            for (i=0;i<strlen(ligne);i++){

                  j=0;
                  while (ligne[i]!=table[j].lettre && j++<TAILLE-1);
                        if (j<TAILLE) printf("   %s", table[j].morse);
                        else printf("   ??????");
                  if (!((i+1)%10)) printf("\n     ");
            }
        break;

        case '2':
            printf("\n\n-> : ");
            gets(ligne);
            printf("\n=> : ");

            for (i=0;ligne[i]!='\0';i++){

                strncpy(car, d, (f-d));
                a=strcmp(car, table->morse);
                if(a==0) printf("%c", table[i].lettre);
                else printf(" ?????? ");
                }
        break;

        case '0':
            test=0;
        break;

        default:
            printf("Entrez 1 ou 2");
        }

    }while(test==1);

    getch();
 }

mercredi 28 novembre 2007 à 02:20:57 | Re : Problème code morse

SAKingdom

Membre Club
strncpy(car, d, (f-d));
Tu es conscient que car est un char et que tu essais de copier une chaine dedans ?

d=ligne[0]
f=ligne[' ']
Ça compile ça ?

for (i=0;i<strlen(ligne);i++)
À ne jamais faire. On calcule la taille une fois avant la boucle.

a = strcmp(...)

strcmp retourne int pas un char.

C++ (@++)

mercredi 28 novembre 2007 à 12:04:19 | Re : Problème code morse

jpv424

Ok merci pour ces details sa compile et en plus sa m'affiche quelques chose pour le case2
Merci beaucoup !!!

Mais je ne comprend pas bien comme faire pour que les pointeurs debut et fin jouent leur rôle. (comparez la chaine entrée dans ligne et voir si le code existe dans le tableau et ensuite l'afficher...)

Re-code :

# include <stdio.h>
# include <string.h>
# include <conio.h>
# define TAILLE 37

void main(){

    struct code{
        char lettre;
        char *morse;
    };

    struct code table [TAILLE]={
        {'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 ligne [80], car[80], *d=ligne, *f=ligne;
    int i,j,test=1, nbl, a, longligne;

    clrscr();

    printf("******************\n");
    printf("*Traducteur Morse*\n");
    printf("******************\n");

    printf("\n1. Francais => Morse");
    printf("\n2. Morse => Francais");
    printf("\n0. Quitter");
    printf("\n\n-> ");

    do{

        switch(getch()){

        case '1':
            printf("\n\n80 caract¦res max. -> : ");
            gets(ligne);
            printf("\n=> : ");

            for(i=0; i<=80; i++){
                  if(ligne[i]=='\0') break;
                  if(ligne[i] <= 122 && ligne[i] >= 97) ligne[i]-=32;
                  else ligne[i];
            }

            longligne=strlen(ligne);

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

                  j=0;
                  while (ligne[i]!=table[j].lettre && j++<TAILLE-1);
                        if (j<TAILLE) printf("   %s", table[j].morse);
                        else printf("   ??????");
                  if (!((i+1)%10)) printf("\n     ");
            }
        break;

        case '2':
            printf("\n\n-> : ");
            gets(ligne);
            printf("\n=> : ");

            for (i=0;ligne[i]!='\0';i++){

                strncpy(car, d, (f-d));
                a=strcmp(car, table->morse);
                if(a==0) printf("%c", table[i].lettre);
                else printf(" ?????? ");
                }
        break;

        case '0':
            test=0;
        break;

        default:
            printf("Entrez 1 ou 2");
        }

    }while(test==1);

    getch();
 }

vendredi 30 novembre 2007 à 23:53:16 | Re : Problème code morse

jpv424

Bonsoir tout le monde !!!

Personne ne peut m'aider à finir ce petit programme ?

Svp


Cette discussion est classée dans : ligne, code, case, printf, morse


Répondre à ce message

Sujets en rapport avec ce message

Protocole ICMP (ping) [ par bouzakaria ] bonjour j'utilise actuellement le programme pingueur.c pour simuler la commande dos ping (protocole ICMP), lorsque l'adresse IP est correcte le prog programme pingueur.c [ par bouzakaria ] bonjour j'utilise actuellement le programme pingueur.c pour similer la commande dos ping (protocole ICMP), lorsque l'adresse IP est correcte le progr problem dans un code sudoko en c [ par sassi1985 ] svp jai un mini projet c sur le code de jeux sodoku je fait le code mais j ai problème de la fichage il affiche des grand entier aléatoire voila mon construire une ligne en C++ [ par zora700 ] svp j'ai besoin de votre aide aperçu de la classe Cellule: [code=cpp]class Cellule { public: friend ostream & operator > (istream &is, Cellule débuter en gtk+ [ par fgh39 ] Bonjour Je débute le language GTK+ avec code:block. Je recherche a afficher des nombres qui s'incrémentes ou décrémentes a partir d'un boucle while. rectification dune code C et/ou aide sur l'algorithme [ par negets ] bonjour, besoin d'aide; j'aimerai dégager l'algorithme de ce code afin de le programmer sous matlab je connais plus rien en C et C++(je commence à lir Problème de code en C [ par Guillaume170194 ] Bonjour à tous Je ne vois pas le problème que peut avoir le code. Je choisi le niveau mais après cela ne correspond pas. Merci de votre aide Voici l Erreurs C2065 et C2143 [ par thomas71 ] Bonjour, J'ai un petit problème avec le bout de code ci-dessous. Je travaille sous Visual Studio 2010. Deux erreur apparaissent lors de la compilatio


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales