Ayuda urgente con Borland C++

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

buenobueno
Novat@
Mensajes: 1
Registrado: Sab Feb 22, 2003 11:49 pm

Ayuda urgente con Borland C++

Mensaje por buenobueno » Sab Feb 22, 2003 11:58 pm

El enunciado del problema es introducir una palabra y chequear si la palabra es Palindrome (como por ejemplo la palabra inglesa "level", o sea que se lea igual para adelante y para atras).

Ahora, tenemos un programa casi listo pero al parecer el ciclo no se termina y el programa se queda pegado :S... Asi que les adjunto el programa como lo tenemos hasta el momento.

#include <stdio.h>
#include <conio.h>
#include <string.h>
void main () {
clrscr ();
char frase[50];
int i=0,j,l;
char algo;
printf("Escriba una frase: ");
scanf ("%s",frase);
while(frase!='\0')
i++;
l=i;
do
for (i=0;i<(l/2);i++) {
for (j=l;j>(l/2);j--) {
if (frase==frase[j])
algo='s';
else algo='n';
}
}while (algo=='s');
if (algo=='s')
printf ("La palabra es palindroma");
else printf ("La palabra no es palindroma");
getch ();
}




Dos notas: a) el programa es de urgencia!!! Si no lo hacemos nos quiebran en informatica ;) b) Estoy seguro que es "palindrome" pero soy el unico que piensa así.

Gracias desde ya.

Avatar de Usuario
ABCdatos
Administrador foro
Mensajes: 673
Registrado: Dom Mar 03, 2002 1:00 am
Contactar:

Mensaje por ABCdatos » Dom Feb 23, 2003 5:28 am

Está mal ideado el algoritmo, no tienes que anidar dos blucles for. Se trata de recorrer la palabra hasta la mitad y con el mismo puntero que se sigue la primera mitad y una operación sencilla (longitud de la palabra -puntero), se obtiene la letra del otro extremo que se quiere comparar.

Para hacerlo fácil, la condición inicial sería que es un palíndrome, y si en el bucle no hay una condición de diferencia que demuestre lo contrario, quedaría la condición inicial de que sí lo es.

Saludos.
Equipo ABCdatos.
http://www.abcdatos.com/

Responder