Está en la página 1de 2

Pontificia Universidad Javeriana

Departamento de Ingeniería de Sistemas


Pensamiento Algorítmico
Primer Parcial Conjunto - Marzo 2 de 2018
El uso de cualquier dispositivo electrónico está prohibido durante el desarrollo del
parcial. Estos dispositivos deben apagarse y guardarse antes de iniciar la
evaluación. Ignorar esta recomendación se considera como fraude.

1 (45%) Objetos tridimensionales


En la generación de videojuegos y otros tipos de escenas virtuales, los objetos suelen describirse a partir de una
“nube” o conjunto de puntos tridimensionales. Cada punto se representa entonces con una triada de valores enteros
(o coordenada tridimensional), denotada como (x, y, z), donde cada valor representa el desplazamiento realizado
sobre cada eje de coordenadas: horizontal para el eje x, vertical para el eje y y en profundidad para el eje z.
Entre las operaciones más importantes que se requieren al momento de dibujar esos objetos en la pantalla se
encuentra la determinación del rango efectivo de coordenadas y el cálculo del centroide. El rango de coordenadas
corresponde a los valores mínimos y máximos de las coordenadas del objeto (de su “nube” de puntos) en cada eje,
mientras que el centroide del objeto corresponde a la coordenada tridimensional promedio. Es importante resaltar
que las coordenadas en pantalla sólo pueden expresarse en valores enteros. Ejemplo:

“Nube” de puntos del objeto: Resultado:

x y z Rango en eje x: 25 - 150


25 15 45 Rango en eje y: 15 - 54
150 25 56 Rango en eje z: 22 - 85
67 34 22 Centroide: (81,34,53)
84 29 78
123 54 32
34 46 85

De esta manera, construya un algoritmo que permita determinar el rango efectivo de coordenadas y el centroide
de un objeto dado el conjunto de puntos tridimensionales que lo representan.

2 (55%) Canicas
Las canicas son pequeñas esferas, normalmente de vidrio, que los niños usan desde tiempos inmemoriales para
realizar diversos juegos. Las canicas suelen ser de diversos tamaños y colores, y dentro de cada juego esas carac-
terísticas pueden representas ventajas o poderes especiales. De esta forma, es de vital importancia clasificar las
canicas al momento de realizar un juego específico.
Una posible clasificación se basa únicamente en el diámetro de cada canica, y permite determinar si la canica
es buena, potencialmente buena o mala para el juego. Una canica es buena si su diámetro es múltiplo de 2, 3 y 5
(al mismo tiempo); es potencialmente buena si su diámetro sólo es múltiplo de 2, 3 o 5 (sólo de uno o dos de ellos);
y se considera mala una canica que tiene un diámetro que no es múltiplo de 2, 3 ni 5 (de ninguno). Ejemplo:

Canica 1 Canica 2 Canica 3 Canica 4 Canica 5 Canica 6


Diámetro 30 29 27 25 22 15
Múltiplos 2, 3 y 5 Ninguno 3 5 2 3y5
Clasificación Buena Mala Pot. buena Pot. buena Pot. buena Pot. buena

Teniendo en cuenta esto, construya un algoritmo que permita clasificar un conjunto de canicas cuyos diámetros
son dados por el usuario. Además de la clasificación de cada canica, se debería informar la cantidad de canicas en
cada clase; para el ejemplo, de las 6 canicas hay 1 buena, 1 mala y 4 potencialmente buenas.
3 (10%) Análisis de código
Considere los siguientes fragmentos de código:
int i = 1; int i = 1;
int j = 0; int j = 0;
while ( i < j ) { do {
for ( int k = 0; k <= j; k++ ) { for ( int k = 0; k <= j; k++ ) {
cout <‌< “*”; cout <‌< “*”;
} }
i++; i++;
j--; j--;
cout <‌< endl; cout <‌< endl;
} } while ( i < j );
¿Qué imprime en pantalla cada fragmento de código? Justifique su respuesta.
Tiempo máximo: 2 horas.

También podría gustarte