[ Foro de C++ ]
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.
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.
¿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.)