• Martes 16 de Abril de 2024, 09:33

Autor Tema:  Palindromo  (Leído 4924 veces)

grandzam

  • Miembro MUY activo
  • ***
  • Mensajes: 118
    • Ver Perfil
Palindromo
« en: Jueves 23 de Febrero de 2006, 07:22 »
0
Buenos días amigos de solocodigo, bueno, me dejaron una tarea de ensamblador, es, como saber si una cadena es un palindromo, he pensado, que tal vez ir comparando caracter por caracter, es decir recorrer una cadena del principio al final y otra del final al principio, el problema es que no sé como hacerlo porque como saben una cadena puede estar así:

5abcba, donde 5 es la longitud de la cadena (pisición cero), y si hago ke la cadena se invierta, kedaría abcab5, y comparando pues, kedaría:

comp a,5
je siguiente ; donde siguiente es una etiqueta que hace que se recorra el índice, y bueno, desde ahí estaría mal, lo mismo pasa si, a la cadena queda como

abcba0, donde 0 es el caracter de terminación de la cadena,

ahora podría hacer que empezara desde un caracter después, pero el problema es que, como le hago para saber donde finaliza la otra cadena, o también he pensado, ponerle dos limites de donde empieza y donde termina la cadena, es decir, tomar la primer o la lultima posición y lo ke hay ahi, insertarla al final o al principio, pero no sé si funcionaría,

otra idea ke un amigo mencionó es que metiera la cadena inversa al stack con el push y luego ir sacandolos de manera que cuando los sacara, kedarían en orden los caracteres, el problema ke yo creo es que la pila ke se maneja es de 16 bits.

Alguna idea de como hacerle???.... bueno, de antemano muchas gracias... y disculpen las molestias, apenas estoy aprendiendo ensamblador...

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Palindromo
« Respuesta #1 en: Jueves 23 de Febrero de 2006, 08:45 »
0
Yo no utilizaria esa notacion que pone el numero de caracteres antes de la cadena bajo ningun concepto sino que usaria las cadenas terminadas en cero.

La comparacion se hace contra todo lo que esta entre el primer caracter y el cero, sin incluir a este ultimo que justamente es el terminador.

Con la cadena "abcba", 0 tenes estos bytes: 97 98 99 98 97 0
y simplemente tenes que generar otra cadena partiendo desde el cero, sin incluirlo, que en este caso obviamente daria el mismo resultado.

Pero hagamos otra como SOL: 83 79 76 0
y quedaria entonces: 76 79 83 0

El punto principal de tu problema es IGNORAR el 0, no es parte integrante de la comparacion y por lo tanto no tenes que trasladarlo a la otra cadena sino que tenes que usarlo para señalar el fin de la misma ya que esa es su funcion.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.