Code MORSE en C

jpv424
Messages postés
47
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
24 mars 2012
- 5 nov. 2007 à 11:04
jpv424
Messages postés
47
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
24 mars 2012
- 7 nov. 2007 à 15:09
Salut à tous et merci pour votre travail !! Le site est génial.

En grapillant à droite à gauche des source sur le morse j'ai fabriqué le code ci-dessous. Le problème est qu'on me demande d'utiliser les structures et là je ne suis pas du tout famillier avec sa... Comment pourrais-je convertir mon code en y mettant cette fois des structures ?

Merci beaucoup !!!




Dans main.c :



/*Déclarations*/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include"fonctions_morse.h"

/*Programme*/
int main()
{
    char    t[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','1','2','3','4','5','6','7','8','9','0',
                ' '},
            m[37][6]={{".-"},{"-..."},{"-.-."},{"-.."},{"."},{"..-."},{"--."},{"...."},{".."},
                     {".---"},{"-.-"},{".-.."},{"--"},{"-."},{"---"},{".--."},{"--.-"},{".-."},
                   {"..."},{"-"},{"..-"},{"...-"},{".--"},{"-..-"},{"-.--"},{"--.."},{".----"},
                   {"..---"},{"...--"},{"....-"},{"....."},{"-...."},{"--..."},{"---.."},{"---."},
                   {"-----"},{"//"}},
            c[80];

    int k=1;

    do
    {
        printf("1 : Coder un texte en morse\n");
        printf("2 : Decoder un texte morse\n");
        printf("3 : Quitter le programme\n\n");

        switch(getch())
        {
            case'1':    s_texte(c,m,t);break;
            case'2':    s_morse(c,m,t);break;
            case'3':    k=0;break;
            default:    printf("Choix inconnu\n\n");break;
        }
    }while(k!=0);
    return 0;
}

Dans fonction_morse.h :

void s_morse(char[],char[37][6],char[]);
void s_texte(char[]);
void a_morse(char[],char[],char[37][6]);
void a_texte(char[],char[],int);

Dans f_saisie.c :

/*Saisie de Texte vers Morse*/
void s_texte(char c[],char m[37][6],char t[])
{
    printf("Phrase a coder en morse (80 caracteres max)\n\n");
    printf(" -> ");
    gets(c);

    if(strlen(c)>80) printf("\nTrop de caractères !\n\n");
    else a_morse(c,t,m);
}

/*Saisie de Morse vers Texte*/
void s_morse(char c[],char m[37][6],char t[])
{
    char z[1][6],x[80];
    int i,k =0,ok;

    printf("Caracteres morse à décoder\n\n");
    printf(" -> ");
    gets(z[0]);
   
    for(i= 0;i<37;i++)
    {
        if(strcmp(z[0],m[i])==0)
        {
            x[k]=i;
            k++;
            ok=1;
            i=37;
        }
        else ok=0;
    }
    if(ok==0) printf("\nCaractere morse inconnu !");
    else printf(" => ");
    a_texte(t,x,k);
}

Dans f_affichage.c :

/*Afficher le texte*/
void a_texte(char t[],char x[],int k)
{
    int i;

    for(i =0;i<k;i++) printf("%c",t[x[i]]);
    printf("\n\n");
}

/*Afficher le code morse*/
void a_morse(char c[],char t[],char m[37][6])
{
    int i,j;

    printf(" => ");
    for(i=0;i<strlen(c);i++)
    {
        for(j=0;j<37;j++)
        {
            if(c[i]==t[j])
            {
                if(c[i]==' ') printf(" ");
                printf("%s",m[j]);
                if((c[i+1]!='\0')&&(c[i+1]!=' ')&&(c[i]!=' ')) printf(" | ");
                if(c[i]==' ') printf(" ");
            }
        }
    }
    printf("\n\n");
}

4 réponses

mogwai93
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

5 nov. 2007 à 11:34
regarde ici :
http://c.developpez.com/faq/?page=types#KEYWORD_typedef_struct

dans ton cas, ta structure contient 2 variables :
- 1 pour le caractère
- 1 pour le code morse correspondant

ensuite il ne te reste qu'à faire un tableau de ta structure (ou une liste de pointeurs sur ta structure si tu utilises les listes)


 
0
jpv424
Messages postés
47
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
24 mars 2012

6 nov. 2007 à 11:01
Merci mais j'ai juste un peu de mal à voir comment faire appel à la structure une fois qu'elle à été créée...

Pourriez-vous faire un exemple avec ma source si vous avez le temps ?

Merci
0
DeAtHCrAsH
Messages postés
2670
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013

6 nov. 2007 à 11:36
Voici comment marche une structure :

// Ici on déclare la structure
typedef struct Personne {
   int Age;
   char Nom[32];
};

// Pour utiliser ta structure tu fais comem suit
Personne unePersonne;
unePersonne.Age = 10;
strcpy(unePersonne.Nom, "toto");

A toi de jouer, on va pas te macher le travail ;)

Shell
0
jpv424
Messages postés
47
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
24 mars 2012

7 nov. 2007 à 15:09
A ok je vois le truc sa simplifi vachement les choses en faite...

Merci ^^
0