Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lepizz en 14 de Mayo 2015, 20:44
-
Buenas necesito ayuda con un pseudocódigo de un programa que pida palabras o frases palíndromas, con el fin de que el programa imprima si la palabra es palíndroma o no.
Necesito que sea solo un Pseudocódigo más que en un lenguaje especifico. Si me pueden ayudar gracias de antemano.
-
Hola voy con la respuesta, un palíndromo es una palabra que se lee igual de izquierda a derecha y de derecha a izquierda.
Ejemplo: reconocer es un palíndromo
El algoritmo para determinar si una palabra es un palíndromo puede ser descrito informalmente así: hay que comparar todos los pares de letras comenzando desde los extremos hacia el centro. Si todos los pares son iguales, entonces la palabra sí es un palíndromo. Basta que se encuentre un par de letras correspondientes distintas para que la palabra no sea un palíndromo.
Pseudocódigo:
Inicio
Mostrar 'Ingrese la palabra'
Pedir palabra
i = 1
j = longitud(palabra)
hacer mientras (extraerLetra(palabra, i) = extraerLetra(palabra,j) y i < j) {
i = i + 1
j = j - 1
Fin HacerMientras
Si (i >= j) entonces
Mostrar "La palabra ", palabra, " es palindromo"
Sino
Mostrar "La palabra ", palabra, " es palindromo"
FinSi
Fin
Ejemplo implementación en java:
public class Palindromo {
public static void main(String[] args) {
String[] palabras = {"reconocer","asdfdsa","AsDdSa","Sale El As","No palindromos","Cualquier frase","O palabra","Que no sea palindromo"};
int indice = (int)(Math.random() * palabras.length);
System.out.println("Palabra utilizada: "+ palabras[indice]);
if (palindromo(palabras[indice]))
System.out.println("Palindromo");
else
System.out.println("NO Palindromo");
}
static boolean palindromo(String palabra)
{
//Quitar espacios y convertirlo a minusculas para hacer las comparaciones
String modificado = palabra.replaceAll(" ","").toLowerCase();
int i=0;
while (i < modificado.length() / 2)
{
if (modificado.charAt(i) != modificado.charAt(modificado.length() -1 -i))
return false;
i++;
}
return true;
}
}
-
Me fue de mucha ayuda.. gracias no voy a copiar su código, no sea q me acusen de plagio en la U, pero me voy a guiar partiendo de el. supongo q si fuera una frase como "Se van sus naves" habría que declarar:
Que el espacio, la coma, y los puntos (en caso de que esten presentes) son nulos.. osea para q el cursor q compara la primera y la ultima letra, luego la segunda con la antepenultima, y asi sucesivamente en caso de topar con con un espacio, avance al siguiente caracter, espero haberme explicado bien.. creo q mi idea seria algo asi como:
x=""
y=","
z="."
x= null
y=null
z=null
y tal vez algo como:
si el caracter es igual a "X", "y" o "z" entonces
i +1 (en su ejemplo)
algo asi?
-
Hola Lepizz como comentas para evaluar palíndromos suelen quitarse los espacios, de hecho en el código java anterior aparecer reflejado:
//Quitar espacios y convertirlo a minusculas para hacer las comparaciones
Es decir, a la hora de comparar no se tendrían en cuenta espacios ni mayúsculas / minúsculas, aunque esto depende de cómo se quiera hacer.
Saludos