sábado, 22 de setembro de 2018

URI PROBLEMA 2338 - Morse SOLUÇÃO EM C

URI Online Judge | 2338

Morse

Por Syed Sarfaraz Akhtar, IIITH IN India
Timelimit: 1
Todos os seus amigos estão loucos pelo filme "Interstellar". Agora eles estão postando textos no Facebook em Código Morse. Você precisa escrever um código para decodificar Morse!
Este Código Morse contém somente letras minúsculas (a-z) e espaços em branco.
Nota - Código Morse é uma forma de codificar caracteres em uma sequências de pontos e traços. Cada caracter tem uma codificação fixa. Um exemplo bem famoso é o Morse de SOS "...---..." . S é codificado como "..." (ponto ponto ponto) e O é codificado como "---" (traço traço traço).
Neste problema, um ponto é denotado por "=" e um traço por "===". Símbolos são separados por "." , letras são separadas por "..." e palavras são separadas por "......." .
Sendo assim, SOS é codificado como =.=.=...===.===.===...=.=.=
Codificações para todos os caracteres podem ser encontradas no link abaixo.

Entrada

A entrada consiste em múltiplos casos de teste.
A primeira linha de cada entrada contém o número de casos de teste (t)(1 <= t <= 10).
As próximas t linhas contém os Códigos Morse. O tamanho de cada código é menor que 1000 caracteres.

Saída

A saída é divida em linhas, que representam a mensagem decodificada de cada caso de teste.



URI Online Judge | 2338

Morse

By Syed Sarfaraz Akhtar, IIITH IN India
Timelimit: 1
All your friends are crazy about the movie "Interstellar". They are now posting on facebook in Morse code. You need to write a code to decode Morse!!
These Morse codes only contain lowercase english letters(a-z) and whitespaces.
Note - Morse code is a way to encode characters as a sequence of dits and dashes. Each character has a fixed encoding. An example of a famous morse code is that of SOS "...---..." . S is encoded as "..." (dit dit dit) and O is encoded as "---" (dash dash dash).
In this problem, a dit is denoted by "=" and a dash is denoted by "===". Symbols are seperated by "." , letters are seperated by "..." and words are seperated by "......." .
So, SOS is encoded as =.=.=...===.===.===...=.=.=
Encodings for all the characters can be found at the link given below.

Input

There are multiple test cases.
The first line of the input contains the number of test cases (t)(1 <= t <= 10).
The next t lines contain morse codes. The length of each code is less than 1000 characters

Output

Output the decoded codes in a new line for each test case.






#include <stdio.h>

int main()
{
    int tst, i, j, l, cndtn = 0;
    char str[1000*2], tmp[15];
    scanf("%d", &tst);
    for(i = 1; i<=tst; i++)
    {
        scanf("%s", str);
        for(j = 0; j < strlen(str) ;)
        {
            for(l = 0; ;l++)
            {
                if(str[j] == '=')
                {
                    tmp[l] = '=';
                    j += 1;
                }
                else if(str[j] == '.' && str[j+1] == '.' && str[j+3] == '.')
                {
                    j += 7;
                    tmp[l] = '\0';
                    cndtn = 1;
                    break;
                }
                else if((str[j] == '.' && str[j+1] == '.' && str[j+2] == '.'))
                {
                    j += 3;
                    tmp[l] = '\0';
                    break;
                }
                else
                {
                    tmp[l] = '.';
                    j += 1;
                }
                if(strlen(str) <= j)
                {
                    tmp[l+1] = '\0';
                    j += 1;
                    break;
                }
            }
            if(strcmp( tmp, "=.===") == 0) printf("a");
            else if(strcmp( tmp, "===.=.=.=") == 0) printf("b");
            else if(strcmp( tmp, "===.=.===.=") == 0) printf("c");
            else if(strcmp( tmp, "===.=.=") == 0) printf("d");
            else if(strcmp( tmp, "=") == 0) printf("e");
            else if(strcmp( tmp, "=.=.===.=") == 0) printf("f");
            else if(strcmp( tmp, "===.===.=") == 0) printf("g");
            else if(strcmp( tmp, "=.=.=.=") == 0) printf("h");
            else if(strcmp( tmp, "=.=") == 0) printf("i");
            else if(strcmp( tmp, "=.===.===.===") == 0) printf("j");
            else if(strcmp( tmp, "===.=.===") == 0) printf("k");
            else if(strcmp( tmp, "=.===.=.=") == 0) printf("l");
            else if(strcmp( tmp, "===.===") == 0) printf("m");
            else if(strcmp( tmp, "===.=") == 0) printf("n");
            else if(strcmp( tmp, "===.===.===") == 0) printf("o");
            else if(strcmp( tmp, "=.===.===.=") == 0) printf("p");
            else if(strcmp( tmp, "===.===.=.===") == 0) printf("q");
            else if(strcmp( tmp, "=.===.=") == 0) printf("r");
            else if(strcmp( tmp, "=.=.=") == 0) printf("s");
            else if(strcmp( tmp, "===") == 0) printf("t");
            else if(strcmp( tmp, "=.=.===") == 0) printf("u");
            else if(strcmp( tmp, "=.=.=.===") == 0) printf("v");
            else if(strcmp( tmp, "=.===.===") == 0) printf("w");
            else if(strcmp( tmp, "===.=.=.===") == 0) printf("x");
            else if(strcmp( tmp, "===.=.===.===") == 0) printf("y");
            else if(strcmp( tmp, "===.===.=.=") == 0) printf("z");
            if(cndtn == 1)
            {
                printf(" ");
                cndtn = 0;
            }
        }
        printf("\n");

    }
    return 0;
}

Nenhum comentário:

Postar um comentário

URI PROBLEMA 1133 - Resto da Divisão SOLUÇÃO EM C

URI Online Judge | 1133 Resto da Divisão Adaptado por Neilor Tonin, URI   Brasil Timelimit: 1 Escreva um programa que leia 2 valo...