¿Donde me equivoco?

aprendiz
18 de Enero del 2006
Hola a todos, vuelvo a vosotros en busca de ayuda.

Resulta que programo en C, ahora mismo estoy realizando Analisi Descendiente, es decir utilizando funciones y acciones para hacer más estructurado y eficaz un programa.
Estoy con un ejercicio cuyo objetivo es decir el numero de palabras polindromas que hay en una frase introducida por el usuario.
Supongo que lo sabréis pero por si acaso lo recuerdo, las palabras polindromas son aquellas que se leen igual de izquierda a derecha que de derecha a izquierda, un buen ejemplo sería el nombre ANA.

He realizado el siguiente código, pero no sé pq razón no me ejecuta bien

Cita:
#include <stdio.h>
#include <conio.h>
#include <string.h>




/*-------------------ENCABEZADOS FUNCIONES/ACCIONES---------------------------*/
void tratar_frase (char frase[100]);



/*-----------------PRINCIPAL--------------------------------------------------*/
void main(void){

char frase[100];


tratar_frase(frase);


}


/*------------TRATAR FRASE----------------------------------------------------*/
void tratar_frase (char frase[100]){

int cont_polindroms=0,i=0,j;
char qt;

qt=\' \';


printf ("Introduce una frase terminada en punto: ");
scanf("%s", frase);

while ((frase[i]!=\'\0\') && (frase[qt]!=\'\0\')){

i=0;j=qt;
while (frase[i]==frase[j]){
if(frase[i]>frase[j]){
i++;
j--;
}

if(frase[j]<frase[i]){
cont_polindroms++;
}

} //Final WHILE anidado
i++;
j--;

} //Final WHILE

printf("Total polindroms: %i", cont_polindroms);

} //Final ACCION


/*----------------------------------------------------------------------------*/



Observaciones:

- Inicializamos j a qt

- Mi intencion con qt es que éste se situe al final de la palabra, entonces iremos comparando i con j si son iguales seguimos comparandolas, cuando j sea menor que i querrá decir que ya hemos comparado toda la palabra y que por lo tanto es polindroma.


Por favor, ¿me puede decir alguien dnd me equivoco? por más que lo repaso no encuentro solución

kike
18 de Enero del 2006
No te acabo de entender, si qt es de tipo char, y le has asignado \'\\' entonces cuando usas su valor numerico (asci) para acceder a una posicion de la frase por ej (frase[qt]), le estas pasando 92, que es segun creo el valor de \'\\' en la tabla ascii.

Mi consejo es que uses punteros en lugar de indices con la cadena, apuntas un puntero de tipo char a la primera letra, y otro a la ultima de la palabra y vas comparando, si coinciden, aumentas en uno el primer puntero y disminuyes en uno el otro, vuelves ha comparar y asi hasta llegar a la mitad. sigues con la siguiente palabra.
Un saludo

aprendiz_
18 de Enero del 2006
ok, haré la prueba de lo que dices, ya te comentaré que tal...

GRACIAS !!!