FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Cómo averiguar si una frase es un palíndromo
hola.. yo soy nueva en esto asi que no entiendo mucho.. tengo que hacer un programa que verifique si una frase es un palindromo, pero en delphi 7. se que tengo que cortar los espacios, todas las letras pasarlas a mayusculas y las acentuadas a no.. pero no se como hacerlo.. espero que me puedan ayudar..
|
#2
|
||||
|
||||
Hola neerii,
Bienvenido a clubdelphi. Como eres nuevo, te pido que te tomes unos minutos para leer la guia de estilo. Respecto a tu duda sería útil que nos comentases que estuviste probando. Si nos comentas de forma más precisa sobre tus avances y/o dudas te podremos ser de mayor ayuda. Intuyo que se trata de un ejercicio que te dieron en la facultad, instituto o cualquier otro establecimiento educativo. Y si te dieron esa tarea es para que tu te ejercites. No sería muy bueno de nuestra parte darte las cosas a modo de "regalo". Yo en vez de ofrecerte una posible solución prefiero indicar opciones, guías, y/o comentarios para que tu mismo puedas unir conceptos y proponer un algoritmo. ¿Te parece justo? Si estás de acuerdo, sería muy oportuno que nos comentes más respecto al tema. Además, tienes a disposición un buscador en los foros en donde puedes buscar sobre el tema, tal vez sobre manejo de strings, trim, revesestring, y términos similares sean de ayuda. Saludos, |
#3
|
|||
|
|||
Opino igual que el post anterior. Nunca es bueno dar las tareas hechas , y si es el caso, podrias decir que no tienes ni idea de como hacerlo.
El problema en si es bastante sensillo, es solo cosa de aislar las palabras usando los espacios como separador. La comprobacion es mas sencilla aun, recorres cada palabra en ambas direcciones y asi compruebas si es o no palindromo, la verdad se me ocurren muchas formas de como hacerlo. Si tienes algo, postealo, se revisa y se te ayuda. |
#4
|
||||
|
||||
Para quitar o eliminar los espacios creo que se usa TRIM('hola amigos '), pero revisa la ayuda de Delphi.
Al igual que para dejar todo en mayúscula prueba con UPPERCASE('holaamigos'), pero consulta la ayuda de Delphi. Puedes tratar la palabra como un arreglo de caracteres y manejarlo con un loop, como por ejemplo: Para Texto:= 'RECONOCER'; Texto[0] = R Texto[1] = E ... ... Texto[8] = E Texto[9] = R Entonces vas comparando desde los extremos hacia el centro, si hay diferencias, entonces no es palindrome. Texto[0] = Texto[9] Texto[1] = Texto[8] Usando Condiciones, Loop y la funchión Length estas al otro lado. Con esto mismo y previo, vas reemplazando las vocales tildadas por unas que no.
Esa es la idea pero no se si esta correcta la estructura de CASE, revisa la ayuda de Delphi... Finalmente, no te puedes presentar así, pidiendo que te hagamos todo el trabajo, muy mal augurio si lo tuyo tiene que ver con informática. Para que tengas de prueba: Cita:
Última edición por MAXIUM fecha: 29-03-2009 a las 06:02:52. |
#5
|
||||
|
||||
Hola a todos,
MAXIUM dio unos buenos tips. Yo solo quiero hacer dos observaciones: 1. En vez de UpperCase, yo recomiendo AnsiUperCase. Revisar la ayuda para más información. 2. La estructura CASE es case ... of. Saludos, |
#6
|
||||
|
||||
Mira este código que acabo de preparar, puedes crear con él una función o símplemente modificarlo, nota utilizo dos "Edit", para que resulte más didáctico, pero obviamente no son necesarios.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#7
|
||||
|
||||
Habrá inconvenientes con las letras que lleven acentos o diéresis, pues todas las funciones nativas discriminan entre letras con diacríticos y sin diacríticos (a no ser que se me escape alguna).
La solución a esto pasa por emplear "mapeo" de caracteres. Digamos una constante String con las letras que pueden llevar diacrítico, pero sin él, y una segunda constante String con las mismas letras pero con el diacrítico puesto. Pero si se quiere impresionar al profesor y se cuenta con el tiempo y la disposición suficientes para investigar, convendría recurrir a la función MultiByteToWideChar de la API de Windows. Ya que ésta permite separar las partes de un carácter compuesto, digamos una a acentuada (á) en las partes que la componen (a y ´). Sólo tener cuidado de exceptuar a la eñe, que por alguna "extraña" razón fue tomada como letra compuesta por algún ingeniero en alguna parte del mundo. Un saludo. Al González. Última edición por Al González fecha: 30-03-2009 a las 06:24:02. |
#8
|
||||
|
||||
Yo pensé que esto no era problema con "AnsiUpperCase"...
__________________
|
#9
|
|||
|
|||
Les dejo una funcion para extraer los simbolos (letra pura) de caracteres multybyte, en resumen, quitar acentos y otras hierbas usando la api mencionada arriba. Un detalle importante es que esto lo hice en Delphi 2009, en versiones anteriores la declaracion de uso de la api podria variar y por tanto las funciones que puse, no funcionaran, esto porque la declaración es ahora Unicode.
Última edición por Cheerpipe fecha: 30-03-2009 a las 17:11:00. |
#10
|
||||
|
||||
Lo que tiene ANSIUpperCase es que considera a todos los caracteres del idioma actual, incluyendo los acentuados. Pero no da por iguales a una "a" y una "á".
Sería terrible que ANSIUpperCase quitara los acentos al convertir a mayúsculas. |
#11
|
||||
|
||||
cierto, cierto, ya entendí cuál sería el problema con los acentos. Gratzie
__________________
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como averiguar que un fichero ha finalizado su creacion ? | QuarkBcn | API de Windows | 3 | 11-03-2009 13:34:55 |
frase palindromo | lakers | Varios | 24 | 24-05-2007 00:34:05 |
Como averiguar los procesos inactivos | abracadabra | API de Windows | 0 | 16-12-2005 22:36:59 |
Como averiguar el usuario de windows | Telemaco | PHP | 8 | 26-07-2004 10:15:10 |
Como averiguar si hay un campo en la Db | Jose Manuel | Tablas planas | 3 | 23-08-2003 19:08:50 |
|