[ Foro de Pascal ]

sumas y restas

19-Feb-2016 21:28
Invitado (rafa26)
8 Respuestas

profesor buen dia
queria tu ayuda en resolver un ejercicio algo complicado y me gustaria tu ayuda.

necesito obtener el resultado de la siguiente  expresion como:

a+b--+c++ =?

las letras son del alfabeto y cada una tiene un valor numerico respectivo donde a=1, b=2,c=3 etc....

agradezco toda orientacion  mil gracias


23-Feb-2016 01:05
Nacho Cabanes (+83)

¿Eso seguro que es Pascal?  En Pascal no se usa la notación b-- ni la notación c++.


03-Apr-2016 20:00
Invitado (rafa26)

efectivamente profesor nacho, pero como podria implementar este caso a traves de un programa pascal? muy agradecido


03-Apr-2016 21:08
Invitado (sertcali)

como podria implementarse en pascal, la verdad es de un punto de maraton interna en mi universidad pero debe ser  en pascal, cualquier orientacion agradecido


04-Apr-2016 00:19
Nacho Cabanes (+83)

Hay un par de detalles que son importantes porque simplificarían la solución:

- ¿Las letras son sólo de la "a" a la "z", minúsculas, y sin ningún identificador formado por más de una letra?

- ¿Las operaciones permitidas son sólo suma, resta, incremento, decremento (sin mulitplicaciones, divisiones, ni potencias, que tienen prioridades distintas)?


04-Apr-2016 15:19
Invitado (sertcali)

Buen dia profesor Nacho , efectivamente es como tu dices las letras son solo de la a a la z minusculas y sin ningun identificador adicional y Las operaciones permitidas son sólo suma, resta, incremento, decremento.

gracias por toda ayuda.


04-Apr-2016 23:11
Nacho Cabanes (+83)

En ese caso no es difícil, porque se puede procesar de izquierda a derecha (de la primera posición de la cadena a la última), letra a letra.

Por ejemplo, en el caso que proponías

a+b--+c++ =?
a=1, b=2,c=3

Se podría hacer algo como:
valor = 0
sumar = true
Lees a -> valor = valor + a (1), ultima variable = a
Lees + -> sumar = true
Lees b -> valor = valor + b (3), ultima variable = b
Lees - -> sumar = false
Lees - (y el anterior también era -) -> valor = valor - 1 (2), ultima variable (b) = ultima variable - 1 (1)
Lees + -> sumar = true
Lees x -> valor = valor + c (5), ultima variable = c
Lees + -> sumar = true
Lees + (y el anterior también era +) -> valor = valor + 1 (6), ultima variable (c) = ultima variable + 1 (4)

Si lo haces paso a paso, de forma muy ordenada, y mostrando los resultados temporales para comprobar que todo va bien, no te será difícil.


05-Apr-2016 22:33
Invitado (sertcali)

buenas profesor,
ante todo mil gracias sin embargo la verdad no entendo porejemplo en tu solucion donde haces la parte del b--  o del c++ , ademas como podria reflejar el caso en que los operadores estuviesen antes de la letra ejemplo  --b    y ++c,  si pudieras explicarmelo un poco menos enredado es que porejemplo la parte de c (5)  no se para que colocas en parentesis el 5 porejemplo como en este caso.

muy agradecido


10-Apr-2016 21:48
Nacho Cabanes (+83)

No puede ser válido también el ++c, porque entonces las expresiones serían ambiguas: b+++c podría querer decir tanto "b postincrementado más c" como "b más c preincrementado".






(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.)