¿Cómo puedo comparar los valores de un array?

varuk

Buenas tardes.

Estoy en pascal pero bueno no busco la sintaxis propiamente dicha.

Veamos, estoy guardando en un array la letra final de cada palabra de una secuencia que me dan. Entonces la gracia está en ver si la última letra de cada palabra es igual a las otras, es decir, que todas las últimas letras de cada palabra sean iguales.

No puedo acceder a cada elemento del array porque no lo sé, pues se guarda según una condición y no en una posición exacta que yo le diga (se guarda un caracter siempre que el siguiente caracter sea un espacio en blanco). He aquí el código:

http://pastebin.com/m199c6bf5

Muchas gracias.

TBT

Cuando guardes la letra de la primera palabra, quédatela en algún lado y la próxima vez que tengas que guardar otra, compáralo con esa letra. Así te ahorras tener que recorrer toda la secuencia, guardar todas las letras de todas las palabras y recorrer el array (a la que guardes una letra distinta, terminas).

Si tienes que recorrer el array a la fuerza, pon más código dle programa o el enunciado del problema etc pero lo suyo es usar punteros o puedes hacer una ñapa de guardar en otro array las posiciones donde hayas ido guardando.

Si te pones, puedes controlar también en el caso que te metan 2 espacios seguidos, por ejemplo. (mira el enunciado o los casos de prueba)

un saludo

LOc0

Por lo que veo de ese trocillo de código el array guardar[] tiene muchos "huecos" vacíos ya que sólo guardas la última letra de cada palabra. Si quieres eficiencia mi consejo es que te crees un array de enteros con 27 posiciones (uno para cada letra del alfabeto) inicializado a 0 y un entero para contar las palabras de la secuencia.

Luego te recorres el texto de entrada y según vayas encontrando letras finales de cada palabra incrementas en uno su posición en el array que te dije antes (te encuentras una 'a', pues haces Inc(array[ord(caracter)-97]); ) y tb incrementas el contador de palabras. Para terminar te recorres el array y si alguna posición es igual al total de palabras ¡BINGO!

Salu2 ;)

varuk

Sí, pero si hago la comparación va a salir mal porque compará un registro del array antes de que haya escrito en él.

Para ello debería poder poner algo así:

IF primeraletra <> ultimo[posicion] AND primeraletra='a'..'z' THEN begin Writeln('no' ) ; break end

(Vamos, indicarle a la comparación que primeraletra (que es el registro 1) hay un caracter entre a y z, para que compare. Y eso no se si puede hacer o no, el decirle que "primeraletra" tiene que contener una letra para comparar.

#3 Creo que lo que tu dices no es lo que me piden: "Escribir un algoritmo que compruebe si todas las palabras del texto terminan en el mismo carácter. "

LOc0

Si tienes 5 palabras y la letra 'e' sale 5 veces...

if (a <> 0) and_then (b = 10/a) then

La segunda condición sólo se comprueba si la primera es TRUE

Salu2 ;)

Usuarios habituales

  • LOc0
  • varuk
  • TBT