Ir ao conteúdo
  • Cadastre-se

C Conversor de texto para morse e mose para texto


Bruno Falckete

Posts recomendados

Estou com um problema no meu codigo que não consigo fazer ele converter morse para texto, porém fazer de texto para morse esta normal....

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>


 

int main(void){

    char letras[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','1','2','3','4','5','6','7','8','9','0',' ','-'};

    char morse[38][6] = {{".-"},{"-..."},{"-.-."},{"-.."},{"."},{"..-."},{"--."},{"...."},{".."},{".---"},{"-.-"},

    {".-.."},{"--"},{"-."},{"---"},{".--."},{"--.-"},{".-."},{"..."},{"-"},{"..-"},{"...-"},{".--"},{"-..-"},{"-.--"},

    {"--.."},{".----"},{"..---"},{"...--"},{"....-"},{"....."},{"-...."},{"--..."},{"---.."},{"----."},{"-----"},{"//"},{" "}};

    char entrada_letras[10000];

    char entrada_morse[10000];

    char entrada_morse2[10000][6];

    char *auxiliar = NULL;

    //int escolha;

    int contador1;

    int contador2;

    int contador3;

    int contador4;

 

    printf("Entre com a palavra para conversao em morse: \n");

    //LEITURA DE DADOS UTILIZANDO FGETS PARA ARMAZENAR OS ESPACOS

    //DECLARACAO E FEITA INTRODUZINDO O NOME DA VARIAVEL O TAMANHO E A ORIGEM (STDIN = ENTRADA PELO TECLADO)

    fgets(entrada_letras,10000,stdin);  

 

        for(contador1 = 0; contador1 < entrada_letras[contador1]; contador1++){

             for (contador2 = 0; contador2 <= 38; contador2++){

                 if(entrada_letras[contador1] == letras[contador2]){

                    // APRESENTACAO UTILIZANDO %S POIS E UMA STRING

                    printf("%s ", morse[contador2]);

                }

            }            

        }

 

    printf("\nEntre com o codigo morse para conversao em palavras: \n");

    //LEITURA DE DADOS UTILIZANDO FGETS PARA ARMAZENAR OS ESPACOS

    //DECLARACAO E FEITA INTRODUZINDO O NOME DA VARIAVEL O TAMANHO E A ORIGEM (STDIN = ENTRADA PELO TECLADO)

    fgets(entrada_morse,10000,stdin);

 

        auxiliar = strtok(entrada_morse, " ");

        while (auxiliar != NULL){

            strcpy(entrada_morse2[contador1], auxiliar);

            auxiliar = strtok(NULL, "\n");

            contador1++;

        }


 

        for(contador1 = 0; contador1 < entrada_morse2[contador1]; contador1++){

            for (contador2 = 0; contador2 < 6; contador2++){

 

                 for (contador3 = 0; contador2 <= morse[contador3]; contador3++){

                    for (contador4 = 0; contador4 < 6; contador4++){

 

                        if(entrada_morse2[contador1] == morse[contador2]){

                        // APRESENTACAO UTILIZANDO %S POIS E UMA STRING

                        printf("%c", letras[contador2]);

                        }

                    }

                }            

            }

        }

 

    return 0;

}

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Bruno Falckete    seu código não está compilando ,  e corrigido , para "rodar"  ,  poderia ser assim :

#define _CRT_SECURE_NO_WARNINGS  // para usar scanf e outras funcoes no visual studio
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() 
{
    char letras[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','1','2','3','4','5','6','7','8','9','0',' ','-' };
    char morse[38][6] = { {".-"},{"-..."},{"-.-."},{"-.."},{"."},{"..-."},{"--."},{"...."},{".."},{".---"},{"-.-"},
    {".-.."},{"--"},{"-."},{"---"},{".--."},{"--.-"},{".-."},{"..."},{"-"},{"..-"},{"...-"},{".--"},{"-..-"},{"-.--"},
    {"--.."},{".----"},{"..---"},{"...--"},{"....-"},{"....."},{"-...."},{"--..."},{"---.."},{"----."},{"-----"},{"//"},{" "} };
    char entrada_letras[10000];
    char entrada_morse[10000];
    char entrada_morse2[10000][6];
    char* auxiliar = NULL;
    //int escolha;
    int contador1;
    int contador2;
    int contador3;
    int contador4;
    printf("Entre com a palavra para conversao em morse: \n");
    //LEITURA DE DADOS UTILIZANDO FGETS PARA ARMAZENAR OS ESPACOS
    //DECLARACAO E FEITA INTRODUZINDO O NOME DA VARIAVEL O TAMANHO E A ORIGEM (STDIN = ENTRADA PELO TECLADO)
    fgets(entrada_letras, 10000, stdin);
    for (contador1 = 0; contador1 < entrada_letras[contador1]; contador1++) 
    {
        for (contador2 = 0; contador2 <= 38; contador2++) 
        {
            if (entrada_letras[contador1] == letras[contador2]) 
            {
                // APRESENTACAO UTILIZANDO %S POIS E UMA STRING
                printf("%s ", morse[contador2]);
            }
        }
    }
    printf("\nEntre com o codigo morse para conversao em palavras: \n");
    //LEITURA DE DADOS UTILIZANDO FGETS PARA ARMAZENAR OS ESPACOS
    //DECLARACAO E FEITA INTRODUZINDO O NOME DA VARIAVEL O TAMANHO E A ORIGEM (STDIN = ENTRADA PELO TECLADO)
    fgets(entrada_morse, 10000, stdin);
    auxiliar = strtok(entrada_morse, " ");
    while (auxiliar != NULL) 
    {
        strcpy(entrada_morse2[contador1], auxiliar);
        auxiliar = strtok(NULL, "\n");
        contador1++;
    }
    for (contador1 = 0; contador1 < strlen(entrada_morse2[contador1]); contador1++) 
    {
        for (contador2 = 0; contador2 < 6; contador2++) 
        {
            for (contador3 = 0; contador2 <= strlen(morse[contador3]); contador3++)
            {
                for (contador4 = 0; contador4 < 6; contador4++) 
                {
                    if (entrada_morse2[contador1] == morse[contador2]) 
                    {
                        // APRESENTACAO UTILIZANDO %S POIS E UMA STRING
                        printf("%c", letras[contador2]);
                    }
                }
            }
        }
    }
    return 0;
}

e converter de morse para texto , você colocou muitos Loop's  For  ,  

Link para o comentário
Compartilhar em outros sites

Use duas funções e escreva a função de retorno a partir dos símbolos. É bem mais simples

Use o botão code como escrito no forum...

 

Veja a diferença

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void){
    char letras[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','1','2','3','4','5','6','7','8','9','0',' ','-'};
    char morse[38][6] = {{".-"},{"-..."},{"-.-."},{"-.."},{"."},{"..-."},{"--."},{"...."},{".."},{".---"},{"-.-"},
    {".-.."},{"--"},{"-."},{"---"},{".--."},{"--.-"},{".-."},{"..."},{"-"},{"..-"},{"...-"},{".--"},{"-..-"},{"-.--"},
    {"--.."},{".----"},{"..---"},{"...--"},{"....-"},{"....."},{"-...."},{"--..."},{"---.."},{"----."},{"-----"},{"//"},{" "}};
    char entrada_letras[10000];
    char entrada_morse[10000];
    char entrada_morse2[10000][6];
    char *auxiliar = NULL;
    //int escolha;
    int contador1;
    int contador2;
    int contador3;
    int contador4;
 
    printf("Entre com a palavra para conversao em morse: \n");
    //LEITURA DE DADOS UTILIZANDO FGETS PARA ARMAZENAR OS ESPACOS
    //DECLARACAO E FEITA INTRODUZINDO O NOME DA VARIAVEL O TAMANHO E A ORIGEM (STDIN = ENTRADA PELO TECLADO)
    fgets(entrada_letras,10000,stdin);  
 
        for(contador1 = 0; contador1 < entrada_letras[contador1]; contador1++){
             for (contador2 = 0; contador2 <= 38; contador2++){
                 if(entrada_letras[contador1] == letras[contador2]){
                    // APRESENTACAO UTILIZANDO %S POIS E UMA STRING
                    printf("%s ", morse[contador2]);
                }
            }            
        }
 
    printf("\nEntre com o codigo morse para conversao em palavras: \n");
    //LEITURA DE DADOS UTILIZANDO FGETS PARA ARMAZENAR OS ESPACOS
    //DECLARACAO E FEITA INTRODUZINDO O NOME DA VARIAVEL O TAMANHO E A ORIGEM (STDIN = ENTRADA PELO TECLADO)
    fgets(entrada_morse,10000,stdin);
 
        auxiliar = strtok(entrada_morse, " ");
        while (auxiliar != NULL){
            strcpy(entrada_morse2[contador1], auxiliar);
            auxiliar = strtok(NULL, "\n");
            contador1++;
        }
 
        for(contador1 = 0; contador1 < entrada_morse2[contador1]; contador1++){
            for (contador2 = 0; contador2 < 6; contador2++){
 
                 for (contador3 = 0; contador2 <= morse[contador3]; contador3++){
                    for (contador4 = 0; contador4 < 6; contador4++){
 
                        if(entrada_morse2[contador1] == morse[contador2]){
                        // APRESENTACAO UTILIZANDO %S POIS E UMA STRING
                        printf("%c", letras[contador2]);
                        }
                    }
                }            
            }
        }
 
    return 0;
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!