Encuentra palabras palíndromas en una cadena y luego réescribelas en C.
¡Hola! ¿Cómo puedo escribir un código en C que verifique si una cadena es un palíndromo y luego la reescriba?
Por ejemplo: la cadena “awbiue abdba aebto leoel”, debería devolver “abdba leoel”.
Escribí este código, pero solo puede encontrar si la cadena es un palíndromo o no:
#include<stdlib.h>
#include<string.h>
int main()
{
char str[100];
printf("Introduce la cadena: ");
gets(str);
int f=1;
{
for(int i=0;i<strlen(str); i++)
{
if(str[i]!=str[strlen(str)-i-1])
{
f=0; break;
}
}
if(f==1)
printf("Palíndromo");
else
printf("No es un palíndromo");}
return 0;
}
davy.ai
Para reescribir las palabras palindrómicas, puede modificar el código de la siguiente manera:
Aquí, primero definimos tres matrices de caracteres:
str
para tomar la cadena de entrada,word
para copiar cada palabra destr
una por una youtput
para almacenar las palabras palindrómicas. Inicializamosoutput
como vacía al principio.Luego, usamos dos bucles anidados. El bucle externo recorre cada caracter de la cadena de entrada
str
. El bucle interno copia la palabra desdestr
empezando desde el índice actual hasta que se encuentre el siguiente espacio o el fin de la cadena. Una vez que tenemos la palabra, verificamos si es un palíndromo o no usando el mismo código que antes.Si la palabra es un palíndromo, la agregamos a la cadena de salida
output
usando la funciónstrcat()
. También agregamos un espacio después de cada palabra para que la cadena de salida tenga los mismos espacios que la cadena de entrada. Por último, actualizamos el índicei
para empezar desde la siguiente palabra.Después de que los bucles hayan terminado, imprimimos la cadena de salida usando
printf()
.</string.h></stdlib.h></stdio.h>