quarta-feira, 24 de outubro de 2018

URI PROBLEMA 1196 - WERTYU SOLUÇÃO EM C

URI Online Judge | 1196

WERTYU

Por Gordon V. Cormack  Canadá
Timelimit: 1

Um erro comum de digitação é colocar as mãos no teclado uma posição à direita da correta posição. Desta forma, "Q" é digitado como "W" e "J" é digitado como "K" e assim por diante. Você deve decodificar a mensagem desta maneira.

Entrada

A entrada consiste em várias linhas de texto. Cada linha pode conter dígitos, espaços e letras maiúsculas. (exceto Q, A, Z), ou pontuação, exceto crase (`) conforme mostrado acima. Teclas rotuladas como palavras [Tab, BackSp, Control, etc.] não são representados na entrada. Você deverá repassar cada letra ou símbolo de pontuação pelo símbolo imediatamente à esquerda. Os espaços de entrada simplesmente deverão ser ecoados (impressos) na saída. 

Saída

Para cada linha de entrada, imprima uma linha de saída correspondente com a mensagem decodificada.



#include <stdio.h>

#define MAX_LENGTH 10000

int main()
{
    char line[MAX_LENGTH], mapping[256], mapped[MAX_LENGTH];
    int i;

    mapping['1'] = '`';
    mapping['2'] = '1';
    mapping['3'] = '2';
    mapping['4'] = '3';
    mapping['5'] = '4';
    mapping['6'] = '5';
    mapping['7'] = '6';
    mapping['8'] = '7';
    mapping['9'] = '8';
    mapping['0'] = '9';
    mapping['-'] = '0';
    mapping['='] = '-';
    mapping['W'] = 'Q';
    mapping['E'] = 'W';
    mapping['R'] = 'E';
    mapping['T'] = 'R';
    mapping['Y'] = 'T';
    mapping['U'] = 'Y';
    mapping['I'] = 'U';
    mapping['O'] = 'I';
    mapping['P'] = 'O';
    mapping['['] = 'P';
    mapping[']'] = '[';
    mapping['\\'] = ']';
    mapping['S'] = 'A';
    mapping['D'] = 'S';
    mapping['F'] = 'D';
    mapping['G'] = 'F';
    mapping['H'] = 'G';
    mapping['J'] = 'H';
    mapping['K'] = 'J';
    mapping['L'] = 'K';
    mapping[';'] = 'L';
    mapping['\''] = ';';
    mapping['X'] = 'Z';
    mapping['C'] = 'X';
    mapping['V'] = 'C';
    mapping['B'] = 'V';
    mapping['N'] = 'B';
    mapping['M'] = 'N';
    mapping[','] = 'M';
    mapping['.'] = ',';
    mapping['/'] = '.';
    mapping[' '] = ' ';

    while (fgets(line, MAX_LENGTH, stdin) != NULL) {
        for (i = 0; i < MAX_LENGTH && line[i] != '\n'; ++i)
            mapped[i] = mapping[line[i]];
        mapped[i] = '\0';

        puts(mapped);
    }

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