[ Foro de Pascal ]

Problema sobre cadenas.

31-May-2012 17:40
Luis Torres (+18)
5 Respuestas

Hola a todos, la razón por la que acudo a este foro es porque tengo muchas dudas sobre la forma de resolver el siguiente problema. Le agradecería cualquier orientación sobre el mismo:

escriba un programa pascal que reciba como entrada un texto compuesto por palabras,separadas por un solo espacio,comas y puntos, e invierta el orden de las palabras del texto.note que los signos de puntuacion deben conservar su posicion.

La salida debe ser "Case #" seguido del número de caso, de un símbolo de "dos puntos", de un espacio en blanco y de la frase invertida.

El primer dato de entrada será la cantidad de valores que se van a analizar.

Ejemplo de entrada
3

Maria, Hola. Como estas.
ataca Pepe a Pedro.

Futbol.


Salida correspondiente
Case #1: estas, Como. Hola Maria. // fijate que los simbolos de puntuacion( , y .) permanecen en la misma posicion que se dio originalmente en la entrada.

Case #2: Pedro a Pepe ataca.

Case #3: Futbol.


10-Jun-2012 08:05
Nacho Cabanes (+84)

Ese problema me suena conocido...

http://www.nachocabanes.com/retos/reto.php?n=002

Una forma de plantearlo en Pascal puede ser:

- Tomas una letra
- Si es de "a" a "z" (incluyendo mayúsculas, en tu caso), vas guardando al final de una cadena (llamada, por ejemplo, "palabra").
- Si es un símbolo de puntuación, añades "palabra" al principio de "frase", seguida por el símbolo de puntuación (y vacías "palabra")
- Si has llegado al final, añades "palabra" al principio de "frase" (y terminas la ejecución).
- Repetido hasta llegar al final de la frase


10-Jun-2012 23:30
Luis Torres (+18)

Gracias por la respuesta. Tengo una duda:

Usted escribió: "- Si es de "a" a "z" (incluyendo mayúsculas, en tu caso), vas guardando al final de una cadena (llamada, por ejemplo, "palabra").".

Mi duda es, ¿Cómo lo guardo al final de una cadena?, ¿cómo se cuál es el final de la cadena palabra?.

Saludos.


11-Jun-2012 09:13
Nacho Cabanes (+84)

Añadir letras al final de una cadena es fácil: basta "concatenarlas" (sumarlas) a continuación de ésta:


var
  cadena: string;
...
cadena := cadena + letra;



11-Jun-2012 09:41
oscar gomez

ok profesor nacho , lo de añadir al final de la cadena es claro, pero y como se hace para saber el final de cada palabra y analizar la siguiente y como se exactamente la posicion de los simbolos de puntuacion para que permanezcan en su sitio original al invertir las palabras?
gracias.


12-Jun-2012 00:24
Luis Torres (+18)

¿En cuál ubicación de la oración se va a tomar la letra para almacenarla en 'palabra'?
Si se hace el recorrido desde la última letra de la oración hasta la primera, ¿no quedará guardada en 'palabra' una palabra al revés?.
Un saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)