1235 - De Dentro para Fora
Esse é um problema que é bem mais fácil em algumas linguagens do que em outras... OVSNEBARAPUORFICEDEC
Descrição
Solução
O objetivo desse problema é separar a string passada em duas metades e performar a inversão nas duas metades, juntando-as novamente. A primeira metade de uma string de tamanho N
cobre as letras no intervalo [0, N/2[
e a segunda as letras no intervalo [N/2, N[
. Em linguagens de baixo nível, você precisa de fato ir e inverter uma letra de cada vez, o que se torna um processo bem confuso, mas em linguagens de alto nível, tudo se torna muito mais fácil.
#include <string.h>
#include <stdio.h>
int main(){
int N, n;
char aux, frase[101];
scanf("%d\n", &N);
for(int i = 0; i < N; ++i){
scanf("%[^\n]\n", &frase);
n = strlen(frase);
for(int j = 0; j < n/4; ++j){
aux = frase[j];
frase[j] = frase[n/2 - j - 1];
frase[n/2 - j - 1] = aux;
aux = frase[j + n/2];
frase[j + n/2] = frase[n - j - 1];
frase[n - j - 1] = aux;
}
printf("%s\n", frase);
}
return 0;
}
Last updated
Was this helpful?