URI Online Judge | 1196
WERTYU
Por Gordon V. Cormack
Canadá
Timelimit: 1
Canadá
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