Está en la página 1de 2

Pontificia Universidad Javeriana

Departamento de Ingeniería de Sistemas


Pensamiento Algorítmico
Tercer Parcial Conjunto – Mayo 23 de 2009

Se permite durante el parcial el uso de una hoja blanca tamaño carta con sus propios apuntes. Dicha hoja debe estar escrita a mano y debe ser
original (es decir, no se permiten hojas hechas en computador o impresas por cualquier otro medio, ni se permiten fotocopias). No se permite el
préstamo de hojas durante el examen; esta situación es catalogada como fraude.

1. (50%) En la Farmacia de la mayor EPS del país se almacena información acerca de las
medicinas que son entregadas a sus afiliados en cada uno de los 12 meses del año. Por la
forma en que trabaja la EPS, cada medicamento ha sido codificado, y junto con su descripción,
se conoce la información sobre la cantidad de unidades del medicamento entregadas cada
mes, así como el valor unitario. La EPS está interesada en analizar la información del año
inmediatamente anterior, y así poder tomar decisiones que beneficien su funcionamiento.

Con base en esta información y con respecto a la información de un año, se le pide lo


siguiente:
a. (10%) Defina la organización de los datos necesaria para resolver el problema (estructuras,
arreglos, matrices, etc.)
Utilizando el lenguaje C/C++ :
b. (20%) Dada la información de los medicamentos, elabore una función que retorne el código
y la descripción del medicamento que más se entregó (en cantidad de unidades) durante todo
el año. Ayuda: tenga en cuenta que una función sólo puede devolver un valor. ¿Cómo agrupa
los datos que le piden para poder retornarlos?
c. (20%) Dada la información de los medicamentos, elabore una función que efectúe un
incremento del 10% en el valor unitario del medicamento, para aquellas medicinas que
representaron durante el año un valor de suministro mayor a $50.000.000 y un incremento de
sólo 5% para el resto de medicinas. Con el propósito de divulgar la información y para no
alterar los datos originales, debe generar un nuevo arreglo con el código de los medicamentos
y el valor (no el porcentaje) del incremento.

2. (50%) Uno de los juegos que fácilmente se puede implementar para jugar en un computador
es el juego conocido con el nombre de Wumpus.

Wumpus es un monstruo que habita en alguna casilla de un mundo rectangular de N filas por
M columnas circundado por muros. El mundo solo tiene una entrada llamada origen, en la
posición 0,0. Se sabe que el monstruo se encuentra en alguna posición diferente al origen. En
los cuadros adyacentes a donde de encuentra el monstruo (arriba, abajo, izquierda y derecha)
se percibe un hedor.
En algunos cuadros del mundo de Wumpus existen abismos. En los cuadros adyacentes a cada
abismo (arriba, abajo, izquierda y derecha) se percibe una brisa. No hay abismo ni en el origen,
ni en donde habita el monstruo. Se sabe que en una de las casillas del mundo hay un tesoro.
En la casilla donde se encuentra el tesoro se percibe un resplandor. El tesoro está donde no
hay ni abismo ni monstruo.

En el origen se encuentra un robot, orientado hacia la derecha. El robot lleva una sola flecha
consigo. El robot puede ejecutar los siguientes movimientos: girar a la izquierda, girar a la
derecha, avanzar una casilla en la dirección en que mira, disparar la flecha en la dirección en
que mira y recoger el tesoro. La disparada flecha avanza hasta matar al monstruo o enterrarse
en un muro. Si la flecha mata al monstruo, se percibe un quejido en todo el mundo. El robot
tiene capacidades de percibir la brisa, el hedor, el resplandor y el quejido en el sitio en que
esté. Si el robot ingresa a un cuadro donde hay un abismo o donde está el monstruo vivo, será
destruido.

El objetivo del juego consiste en guiar al robot hasta el tesoro, recogerlo y guiarlo nuevamente
hasta el origen sano y salvo.

Una casa productora de software quiere sacar una versión del juego, y lo ha contactado a
usted para que desarrolle algunas de las subrutinas (funciones) que forman parte de la
solución. Los diseñadores han decidido representar el mundo de Wumpus como una matriz
NXM de enteros donde un 1 representa al Wumpus, un 2 representa un abismo, un 3
representa el tesoro y en las posiciones donde no hay monstruo ni abismo ni tesoro se
almacena un 0.

Las funciones que usted debe implementar son:


a. (15%) Una función llamada sensaciones que reciba la posición del robot e indique qué
sensaciones percibe. La función retorna 0 si no se percibe algo, 1 si percibe hedor, 2 si percibe
brisa y 4 si percibe resplandor. Si percibe más de una sensación, retorna la suma aritmética de
las sensaciones percibidas; por ejemplo, si percibe hedor y brisa retorna 3 (1 de hedor más 2
de brisa).
b. (20%) Una función llamada disparar que recibe la posición del robot y su orientación (arriba
‘A’, abajo ‘B’, izquierda ‘I’ o derecha ‘D’) e indique retornando un booleano si tras disparar la
flecha se percibió el quejido del Wumpus. La función retorna verdadero si la flecha mató al
Wumpus y falso si no. Si el monstruo muere, se coloca un cero en la posición donde estaba.
c. (15%) Una función mover que avanza al robot una posición en el sentido en que se
encuentra orientado. La función recibe la posición del robot y su orientación. Si el robot se
movió sin ser destruido, la función retorna 0, si se movió pero fue destruido retorna 1. Si no se
pudo mover por estar frente a un muro, retorna -1.

Tiempo máximo 2 horas

También podría gustarte