Você está na página 1de 4

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

FACULTAD DE INGENIERÍA
ESTRUCTURAS DE DATOS Y ALGORITMOS I
M. en I. Fco. Javier Rodríguez García

Parcial 4: Estructuras de datos


Alumno:

Número de cuenta:

Fecha:

Calificación:

Rev. 1.1
M. en I. Fco. Javier Rodríguez G. Parcial 4: Estructuras de datos 2018-2

1 Objetivos
Que el alumno diseñe e implemente una solución a un problema
común en las Ciencias de la Computación utilizando los
conocimientos adquiridos hasta el momento sobre estructuras de
datos.

Conocimientos previos:
• Lenguaje C
• Tipos de datos definidos por el usuario
• Programación por capas
• Estructuras de datos

Nota:
Este examen no pone a prueba sus conocimientos, sino su capacidad de análisis y
síntesis.

2 Ejercicios

2.1 Evaluación de expresiones aritméticas simples


Escriba un programa que evalúe expresiones aritméticas simples en
formato infix utilizando una conversión previa a RPN (postfix).

Limitaciones: Solamente se usarán números enteros 0<=x<=9; se pueden usar paréntesis '( ... )'; solamente se
usarán las operaciones +, - y *.

2.1.1.Función de conversión infix2RPN()


Escriba una función que convierta la expresión de entrada dada al
formato RPN (postfix). Su función deberá tener la siguiente firma:
bool infix2RPN( const char expresion[], char salida[] );

Notas:

El tamaño de "expresion" no necesita ser pasado en los argumentos, la


función lo puede calcular.

Si "expresión" está mal formada, entonces deberá devolver false; en

2
M. en I. Fco. Javier Rodríguez G. Parcial 4: Estructuras de datos 2018-2

caso contrario, devolverá true.

2.1.2.Función de evaluación
Escriba una función que calcule el resultado de la evaluación de la
expresión convertida a postfix. Su función deberá tener la siguiente
firma:
int evaluate( const char expresionRPN[] );

3 Pilas
Su programa deberá utilizar pilas. Las pilas pueden estar basadas en
arreglos o listas enlazadas; Ud. lo decide. Dado que existe la posibilidad
de mezclar la pila con la lista enlazada Ud. decidirá, de igual manera, si
lo hace así u opta por la programación por capas.

4 Driver program
Use el siguiente driver program:
int main()
{
char expresion[80] = "5+((1+2)*4)-3";
char salida[120];
if( infix2RPN( expresion, salida ) == true ){
int resultado = evaluate( salida );
printf( "El resultado es: %d\n", resultado );
}
else{
printf( "Error: La expresioón estaó mal formada.\n" );
}
return 0;
}

5 Entregables
1. El código completo en un sólo PDF. No les cambie el nombre a las
funciones ni a los argumentos. (Recuérdenme enviarles la forma
de mezclar pdf’s en Linux.)

2. Un archivo zip con los archivos del proyecto, incluyendo un

3
M. en I. Fco. Javier Rodríguez G. Parcial 4: Estructuras de datos 2018-2

archivo de texto con la instrucción de compilación.

6 Aspectos a evaluar
• Sabe usar funciones

• Entiende los ADTs

• Entiende las pilas

• Entiende las listas enlazadas

• Entiende la programación por capas

(Más tarde le enviaré la rúbrica de evaluación.)

7 Referencias y bibliografía recomendada


 [BRASSARD97]

 [WIRTH85]

 [GALVE93]

 [BAASE02]

 [WIRTH76]

 [LÓPEZ09]

 Cualquier texto sobre estructuras de datos (no importa el


lenguaje de programación del que hable).

 [JOYANES05]

 [DEITELxx]
Deitel, H. M., Deitel, P. J. Cómo programar en C/C++. 2da. ed.
ESPAÑA: McGraw-Hill, 20xx.

 Referencia del lenguage C


http://www.cplusplus.com/reference/