• Sábado 18 de Mayo de 2024, 18:08

Autor Tema:  expresiones c++  (Leído 1496 veces)

l-e-s-t-a-t

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
expresiones c++
« en: Martes 25 de Mayo de 2010, 22:54 »
0
El problema es el siguiente:

Hacer un programa que dada una expresión matemática analice su sintaxis
indicando si esta es correcta en C++.

A = B + C * (D + E) – 10

Por ejemplo si ingresara:
(a + b
debería arrojar un error, ya que falta el ).

Creo que eso es ver si una expresión está bueno o no.

PD: no coloco algún código o algo para empezar porque eso de las expresiones regulares nunca me lo enseñaron en la U y ni siquiera tengo la base, espero puedan ayudarme o orientarme........desde ya cualquiera sea su desición muchas gracias.

Epa

  • Miembro MUY activo
  • ***
  • Mensajes: 242
  • Nacionalidad: ar
    • Ver Perfil
Re: expresiones c++
« Respuesta #1 en: Viernes 28 de Mayo de 2010, 21:24 »
0
Buenas.

Si queres hacerlo bien, tendrias que aberiguar un poco de analizadores lexicos y sintacticos.

Una forma mas sencilla es la siguiente:

Creamos categorias para los distintos operandos y operadores
Por ejemplo

C = constantes
V = variables
O = +, -, * y /
P = (
Q = )

y hace falta un contador (cont) para lo parentesis, cada vez que aparece un ( aumentamos en 1, y cada vez que aparece ) restamos 1

despues  hay que crear reglas de la forma

C -> O o Q (de una constante podemos ir a un operador o cerrar parentesis)
V -> O o Q (de una variable podemos ir a un operador o cerrar parentesis)
O -> V o C o P (de un operador podemos ir a una variable, una constante o abrir parentesis)
P -> V o C o P
Q -> O o Q

despues hay que trensformar la expresion en los tokens

por ejemplo
B + C * (D + E) – 10
VOVOPVOVQOC

y despues hay que evaluar la cadena, si de una determinada posicion no se puede llegar a la siguiente a partir de alguna de las reglas o si al final el contador de parentesis es distinto de coro, entonces la expresion no es valida, en otro caso la expresion es valida.

Espero que te sea util

Saludos
The sweet smell of a great sorrow lies over the land.


l-e-s-t-a-t

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: expresiones c++
« Respuesta #2 en: Sábado 29 de Mayo de 2010, 03:42 »
0
Cita de: "Epa"
Buenas.

Si queres hacerlo bien, tendrias que aberiguar un poco de analizadores lexicos y sintacticos.

Una forma mas sencilla es la siguiente:

Creamos categorias para los distintos operandos y operadores
Por ejemplo

C = constantes
V = variables
O = +, -, * y /
P = (
Q = )

y hace falta un contador (cont) para lo parentesis, cada vez que aparece un ( aumentamos en 1, y cada vez que aparece ) restamos 1

despues  hay que crear reglas de la forma

C -> O o Q (de una constante podemos ir a un operador o cerrar parentesis)
V -> O o Q (de una variable podemos ir a un operador o cerrar parentesis)
O -> V o C o P (de un operador podemos ir a una variable, una constante o abrir parentesis)
P -> V o C o P
Q -> O o Q

despues hay que trensformar la expresion en los tokens

por ejemplo
B + C * (D + E) – 10
VOVOPVOVQOC

y despues hay que evaluar la cadena, si de una determinada posicion no se puede llegar a la siguiente a partir de alguna de las reglas o si al final el contador de parentesis es distinto de coro, entonces la expresion no es valida, en otro caso la expresion es valida.

Espero que te sea util

Saludos

Muchas gracias por la ayuda, vere que onda, saludos  ^_^