PDA

Ver la Versión Completa : Palindrome con pila de usuario


Armando25
05-08-2007, 16:14:34
Hola apenas estoy aprendiendo Java, me dejaron hacer una programa que verifique si una palabra es palindromo usando pilas de usuario. Este es el codigo de la pila de usuario que tengo pero no se como hacer el palindromo con esta pila. Ayuda...

class Stacks{
char pila[];
int tope;

public Stacks(int tamano){

pila= new char[tamano];
tope=-1;
}
public boolean estaVacia(){
return tope==-1;
}

public void insertar(char i){
if(tope++<pila.length){

pila[tope]=i;
}

}
public char quitar(){
if(estaVacia()) return '\u0000';
return pila[tope--];
}

}

public class Palindromo1{
public static void main(String args []){
System.out.println("Palabra");
String n=Teclado.readLine();
Stacks p= new Stacks(n.length());

for(int i=0;i<n.length();i++){
p.insertar(n.charAt(i));
}
while(!p.estaVacia()){
System.out.println("Quitando "+p.quitar());


}

}
}

Arcioneo
06-08-2007, 15:14:18
De por si pegar codigo y esperar que uno lo lea y de respuestas es medio pesado, pero que un seudoalgoritmo te ayude...

1) Recibes la palabra y haces sus correspondientes verificaciones(ej. que no sea una cadena vacia) y la guardamos en una cadena llamemosla "cad1"

2) creamos una variable llamada "cad2"

3) Usamos la funcion cad1.toCharArray() para guardar la cadena en una cadena de caracteres

4) Nos metemos a un ciclo donde leamos ese arreglo obtenido leyendolo desde el fin hasta el inicio y cada carcater lo vamos agregando en la cadena "cad2"

5) Con el metodo "cad1.equals(cad2)" pues ya compruebas si es igual o no, espero sea de ayuda esto....:cool:

Arcioneo
06-08-2007, 15:30:45
package javaapplication3;

public class Main {

public static void main(String[] args) {
String cadenita = "";
for(int con = 0; con < args.length; con++){
cadenita += args[con];
}
String cadSinEspacios = "";
//kitamos espacios en blanco
for(int cont = 0; cont < cadenita.length(); cont++){
if(cadenita.charAt(cont) != ' '){
cadSinEspacios += cadenita.charAt(cont);
}
}
String cadInvertida = reverseIt(cadSinEspacios);
if(cadSinEspacios.equals(cadInvertida)){
System.out.println("A huevo, es un palindromo");
}
else{
System.out.println("Chale, no es un palindromo " + cadInvertida +".");
}
}

private static String reverseIt(String cad){
String cadenaInvertida = "";
for (int i = cad.length() - 1; i >= 0; i--){
cadenaInvertida += cad.charAt(i);
}
return cadenaInvertida;
}
}

Arcioneo
06-08-2007, 15:31:46
Probado por la ciencia

Armando25
06-08-2007, 18:48:59
El codigo es de utilidad, solo que tiene que ser usando la pila que te mencione. no me acepta el programa asi, alguna sugerencia... de todos modos te agradezco la ayuda.

Arcioneo
07-08-2007, 11:47:53
No entiendo a que te refieres con eso de que "la pila", cual pila? la de tu código?

Eso no tiene nada de pila...

El único argumento que hace que algo sea una pila es la siguiente regla "el ultimo en entrar es el primero en salir", aunque quizas no estoy entendiendo tu pregunta