Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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  ,  

Postado

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

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...