Olá gente, tudo bem. Antes de realizar o post pesquisei aqui, mas minha dúvida em específico ainda não foi abordada. Segue a questão:
Um palíndromo é uma palavra ou frase que tenha a propriedade de poder ser lida tanto da direita para a esquerda como da esquerda para a direita. Por exemplo, as strings "aaaaa", "1221", "bbaabb" são palíndromos, entretanto a string "chef" não é um palíndromo porque se lermos da direita para a esquerda, obtemos "fehc" que não é a mesma coisa que "chef".
Ignore as diferenças entre maiúsculas e minúsculas.
Para os casos onde é dada uma frase, você deve ignorar os espaços. Por exemplo, a frase "A base do teto desaba" é considerada um palíndromo. Ao lê-la da direita para a esquerda, você obterá: "abased otet od esab A". Perceba que, com exceção do espaço, a sequência de caracteres é a mesma da frase original.
Faça um programa que indique se uma string dada é um palíndromo ou não.
Formato de entrada
A entrada consiste de um inteiro n seguido de n strings. Cada string contém no máximo 255 caracteres.
Formato de saída
Para cada string, imprima "SIM" caso seja um palíndromo e "NAO" caso contrário.
Exemplos de:
Entrada
3 ama A base do teto desaba o rato
Saída
SIM SIM NAO
Fiz um código que verifica se é ou não um palíndromo, mas não no formato de saída desejado pela questão e estou com dificuldades em reorganiza-lo. Parece um erro bobo, mas está bem difícil esse primeiro contato com computação eletrônica, visto que meu curso tem essa cadeira 'solta', começamos sem entender o que é um algoritmo e agora nessa pandemia estamos tendo aula remota, mas em um formato bem desestruturado. Estou buscando aprender mais. Desde já agradeço qualquer dica. Segue código:
void main(void){
char entrada[100];
char entradaespelhada[100];
char metade1[50];
char metade2[50];
int tam=0;
int tamcalc=0;
int metade=0;
scanf("%99[^\n]", entrada);
for(tam=0; entrada[tam]!='\0'; tam++);
tamcalc=tam;
metade=tam/2;
for(int x=0;x<tam;x++){
tamcalc--;
entradaespelhada[x]=entrada[tamcalc];
}
entradaespelhada[tam]='\0';
for(int x = 0; x<metade;x++){
metade1[x]=entrada[x];
}
metade1[metade]='\0';
for(int x=0;x<metade;x++){
metade2[x]=entradaespelhada[x];
}
metade2[metade]='\0';
if(strcmp(metade1,metade2)==0){
printf("SIM");
}
else {
printf("NAO");
}
return 0;
}