[ Foro de C++ ]

Ejercicio universidad

26-Dec-2020 16:22
Invitado (ElToMy)
2 Respuestas

No pido que lo resuelvan, simplemente quiero saber si alguien entiende lo que debe hacer el programa.
Se pretende trabajar con un lenguaje de programación simplificado, que vamos a denominar LPS. En el lenguaje LPS,
sólo se pueden usar, como máximo, 1000 variables enteras (que se referencian con un número entre 1 y 1000), y los
programas consistirán en una serie de instrucciones ordenadas con las siguientes características:
1. Considere que v, v1, v2, v3 ? {1, · · · , 1000}, p ? N y e ? Z.
2. (Inicializar) INI v e: Asigna un valor entero e a la variable v.
3. (Asignar) ASIG v1 v2: Asigna el contenido de la variable v2 a la variable v1.
4. (Indirección) IND v1 v2: Asigna a la variable v1 el contenido de la variable cuya referencia se almacena en la
variable v2.
5. (Sumar) SUM v1 v2 v3: Cambia el valor de la variable v1 por la suma de los valores de las variables v2 y v3.
6. (Incrementar) INC v: Incrementa el valor de la variable v en uno.
7. (Multiplicar) MULT v1 v2 v3: Cambia el valor de la variable v1 por la multiplicación de los valores de las
variables v2 y v3.
8. (Ir si menor) IR< v1 v2 p: Esta instrucción permite cambiar el orden secuencial de ejecución de las instrucciones. En concreto, si se cumple que v1 < v2, entonces la siguiente instrucción a ejecutar será la que ocupa la
posición p-esima en el programa (las posiciones comienzan en 1). En otro caso, la ejecución continuará con la
siguiente instrucción.
9. (Ir si igual) IR= v1 v2 p: Si las variables v1 y v2 contienen el mismo valor, entonces la siguiente instrucción
a ejecutar será la que ocupa la posición p-esima en el programa. En otro caso, la ejecución continuará con la
siguiente instrucción.
10. (Ir) IR p: La siguiente instrucción a ejecutar será la que ocupa la posición p-esima en el programa.
11. (Finalizar) FIN: Fuerza el final del programa.
Para materializar este lenguaje, se propone crear la clase Programa LPS. Los métodos principales de esta clase serán:
1. Constructor(): Crea un programa vacío, con todas las variables a cero.
2. void SetVar(int i, int e): Actualiza el valor de la variable i a e.
3. void Instruccion (string inst, int e1, int e2, int e3): Introduce una nueva instrucción al final de
un programa. Cuando una instrucción usa menos de 3 parámetros (como INC), se complementará la llamada con
ceros. El máximo número de instrucciones será 100.
4. int GetVar(int i): Devuelve el valor de la variable i.
5. int Ejecutar(): Ejecuta un programa, actualizando las variables asociadas. Devolverá 0 si el programa se ha
ejecutado correctamente. Si existen errores de sintaxis (por ejemplo, la instrucción no existe o la referencia a una
variable es negativa), el programa se detiene y devuelve 1.


28-Dec-2020 10:49
Nacho Cabanes (+83)

El detalle más importante para empezar a teclear algo está aquí:

"Para materializar este lenguaje, se propone crear la clase Programa LPS. Los métodos principales de esta clase serán (...)"

Lo del principio son detalles concretos de cómo debe comportarse.


23-Jan-2021 16:39
Invitado (Luis)

¿Tienes la solución al ejercicio? Estoy teniendo serios problemas para hacerlo y me gustaría saber la solución.
Gracias de antemano :)






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