Plataforma: URI
Problema: 1235
Enunciado:
A sua impressora foi infectada por um vírus e está imprimindo de forma incorreta. Depois de olhar para várias páginas impressas por um tempo, você percebe que ele está imprimindo cada linha de dentro para fora. Em outras palavras, a metade esquerda de cada linha está sendo impressa a partir do meio da página até a margem esquerda. Do mesmo modo, a metade direita de cada linha está sendo impressa à partir da margem direita e prosseguindo em direção ao centro da página.
Por exemplo a linha:
THIS LINE IS GIBBERISH
está sendo impressa como:
I ENIL SIHTHSIREBBIG S
Da mesma foma, a linha " MANGOS " está sendo impressa incorretamente como "NAM SOG". Sua tarefa é desembaralhar (decifrar) a string a partir da forma como ela foi impressa para a sua forma original. Você pode assumir que cada linha conterá um número par de caracteres.
Linguagem: C
Solução:
A ideia do algoritmo abaixo foi dividir o array "linha" em duas partes: uma do início até a metade (das posições 0 até metade-1) e outra da posição metade até a posição strlen(linha)-1, ou seja, até o fim da linha. Com isso, basta utilizar estruturas de repetição e ler cada uma dessas partes do fim até o início.
#include <stdio.h> #include <string.h> int main() { char linha[102]; int testes, i, metade; scanf("%d", &testes); getchar(); while (testes--) { gets(linha); metade = strlen(linha) / 2; for (i = metade-1; i >= 0; i--) printf("%c", linha[i]); for (i = strlen(linha)-1; i >= metade; i--) printf("%c", linha[i]); printf("\n"); } return 0; }
Nenhum comentário:
Postar um comentário