Realizar un programa que, dada una frase por el usuario, diga si dicha frase es o no un palíndromo.
NOTA: según el diccionario de la RAE, palíndromo es una palabra o frase que se lee igual de izquierda a derecha, que de derecha a izquierda.
EJERCICIO EN JAVA
public class Palindromo1 { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int pos=0; StringBuffer frase, inversa; String s1, s2; System.out.println("Introduzca una frase. Este programa comprobará si se trata o no de un palíndromo."); frase = new StringBuffer(entrada.nextLine()); while (pos < frase.length()) //si utilizamos for, dejamos la parte de pos++ vacía if (!Character.isLetter(frase.charAt(pos))) frase.deleteCharAt(pos); else pos++; inversa = new StringBuffer(frase); inversa.reverse(); s1 = frase.toString(); s2 = inversa.toString(); if (s1.equalsIgnoreCase(s2)) //ignora si hay mayusculas o minisculas System.out.println("La frase introducida es un palíndromo."); else System.out.println("La frase introducida no es un palíndromo."); } }
El mismo ejercicio, pero sin emplear StringBuffer.
DIAGRAMA DE NASSI-SHNEIDERMAN
EJERCICIO EN JAVA
public class Palindromo2 { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int i=0, j, pos=0, contador=0, contador2=0; String frase; System.out.println("Introduzca una frase. Este programa le dirá si es un palíndromo."); frase = entrada.nextLine(); j=(frase.length()-1); while (i<frase.length() & j>=0) if (!Character.isLetter(frase.charAt(i))) i++; else if (!Character.isLetter(frase.charAt(j))) j--; else if (frase.charAt(i) == frase.charAt(j)){ contador++; i++; j--; } else{ i++; j--; } while (pos <= (frase.length()-1)) if (Character.isLetter(frase.charAt(pos))){ contador2++; pos++; } else pos++; if (contador == contador2) System.out.println("La frase es un palíndromo."); else System.out.println("La frase no es un palíndromo."); } }
OTRA FORMA DE HACER EL EJERCICIO EN JAVA (MÁS SENCILLA). Esta forma está basada en el diagrama anterior.
public class Palindromo3 { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); int i=0, j; String frase; boolean esPalindromo=true; System.out.println("Introduzca una frase. Este programa le dirá si es un palíndromo."); frase = entrada.nextLine(); j=(frase.length()-1); while (i<j & esPalindromo) if (!Character.isLetter(frase.charAt(i))) i++; else if (!Character.isLetter(frase.charAt(j))) j--; else if (frase.charAt(i) == frase.charAt(j)){ i++; j--; } else esPalindromo = false; if (i>=j) System.out.println("La frase es un palíndromo."); else System.out.println("La frase no es un palíndromo."); } }
C++
ResponderEliminarMostrar por consola los números del 10 al 999 (ambos incluidos) e ir indicando cuáles son palíndromos (se
ResponderEliminarleen igual de izquierda a derecha y viceversa por ej. 989, 88, 101, etc). Hágalo con funciones. porfa ayuda
ese código en java plis
ResponderEliminarSe puede hacer el programa mediante arreglos o vectores??
ResponderEliminarComo lo que se quiere es saber si una frase es un palíndromo, en este caso tiene más sentido hacerlo con un String, pero entiendo que haciendo algunos ajustes podría cambiarse para hacerlo con un Array. Hace tiempo que no trabajo con Java, así que tampoco puedo aportar mucho más.
Eliminar