Ir ao conteúdo
  • Cadastre-se

Decodificador de código morse em C [DÚVIDA]


alissonr539

Posts recomendados

Olá, boa noite

Preciso programar um programa que seja um decodificador em c, mas não posso usar strucs, o grande problema que to encontrando é como fazer ele ler antes de verificar, por exemplo:

Sendo s: ... / espaço: --.-- / o : --- / fim: -.-.-

Exemplo de entrada:

... --.-- --- --.-- ... -.-.- 

 

Exemplo de saída:

s o s 

 

Eu entendi que ele tem que passar por uma sequencia de caracteres antes, gravar isso até chegar a um espaço, e dai verificar qual letra, jogar na tela e assim por diante, mas não consegui codificar isso, por que como eu faço ele ler gravar uma sequencia de caracteres e ir pra uma função verificar qual letra corresponde?

 

Link para o comentário
Compartilhar em outros sites

A função strtok da include padrão string.h poderia segmentar a string de entrada em várias strings, considerando o caractere de espaço como delimitador GbhmuXl.gif.

 

 

 

Cada string resultante corresponderia a um caractere codificado, que poderia ser decodificado através da função de comparação strcmp, também parte da include string.h.

 

 

 

Exemplo de uso das funções strtok e strcmp F5Rua4D.gif:

 

 

char String[] = "A B C";char *Ponteiro = NULL;Ponteiro = strtok(String, " ");while(Ponteiro != NULL){    puts(Ponteiro);  //Exibiria, uma por uma, as mensagens "A", "B" e "C", respectivamente.    if(strcmp(Ponteiro, "X") == 0)  //Compararia cada string parcial com a string "X".    {        puts("Sim.");  //Se uma das strings parciais fosse igual a "X", a mensagem "Sim." seria exibida.    }    Ponteiro = strtok(NULL, " ");}

 

 

 

Espero ter ajudado GbhmuXl.gif.

Link para o comentário
Compartilhar em outros sites

O que eu fiz até agora é isso, fiz uma matriz que se transforma em uma string até o espaço, quando chega no espaço ele cria uma nova string, agora não consigo comparar essas strings individualmente com os códigos morses em uma outra função (sim, necessito que seja em outra função pois o exercício especifica isso)

 

 

#include <stdio.h>#include <stdlib.h>#include <string.h>void compara(char saida[],int cont);int main() {    char entrada[500], aux[500],saida[500][500];    int cont, cont1=-1, cont2, cont3=-1;printf("Codigo Morse: \n\n");    printf("a .-    j.---  s ...  2 ..---\nb -...  k -.-  t -    3 ...--\nc -.-.  l .-.. u ..-  4 ....-\nd -..   m --   v ...- 5 .....\ne .     n -.   w .--  6 -....\nf ..-.  o ---  x -..- 7 --...\ng --.   p .--. y -.-- 8 ---..\nh ....  q --.- z --.. 9 ----. fim -.-.-\ni ..    r .-.  1.---- 0 ----- espaco --.--\n\n");            printf("Digite uma mensagem:\n");gets(entrada);    for(cont=0; entrada[cont]!='\0'; cont++)    {        if(entrada[cont]==' ')        {            for(cont++,cont2=0; cont1<cont; cont1++, cont2++)                aux[cont2]=entrada[cont1];            aux[cont2]='\0';            cont3++;            strcpy(saida[cont3], aux);        }    }    for(cont=0; cont<=cont3; cont++)    { compara(saida, cont);}    return 0;}void compara (char saida[], int cont){ char o[5]= "---";    if(strcmp(o,saida[cont])==0)        printf("o");}     
Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!