Você está na página 1de 6

Facultad de Ingenierı́a

Departamento de Ingenierı́a eléctrica

Algoritmos y lenguajes de programación

Tarea 1

Profesora: Elena Restrepo


Alumnos Ayudantes: M.D - C.H - B. - F.
Problema 0
En el problema 5 de la Práctica 3 se implementó la pirámide de Mario:

Para el siguiente problema se pide implementar la parte derecha de la pirámide


de Mario. Es decir, debe producir un .espejo.entre ambas pirámides. Las especifica-
ciones y requerimientos son los mismos del problema de la práctica. La salida de
su programa deberı́a verse ası́:

Figura 1: Output esperado problema 0

1
Problema 1
Un número perfecto es un número natural tal que es igual a la suma de sus
divisores propios positivos. Recordar que los divisores propios de un número n
son todos aquellos divisores de n excluyendo a n. Por ejemplo, los divisores propios
de 28 son {1, 2, 4, 7, 14}. Entonces, considerando esta definición, el primero número
perfecto es 6, pues 6 = 1 + 2 + 3. Implemente un algoritmo que encuentre cualquier
número perfecto entre 0 y 10, 000 . El output de su programa deberı́a verse ası́:

Figura 2: Output esperado problema 1

Problema 2
En el siguiente programa implementaremos una variación del clásico cachipún,
porque éste presenta un problema: al ser solo 3 posibilidades, la probabilidad de
empate es demasiado alta. Una forma fácil de solucionarlo es creando más opcio-
nes, y eso es lo que haremos. En particular, implementaremos piedra,papel, tijera,
lagarto o Spock (rock, paper, scissors, lizard, Spock) el cual es una variación intro-
ducida en la popular serie The Big Bang Theory. Aquı́: tijera corta papel, papel
cubre a la piedra, la roca aplasta al lagarto, el lagarto envenena a Spock, Spock
rompe las tijeras, las tijeras decapitan al lagarto, el lagarto se come el papel, el
papel refuta a Spock, Spock vaporiza a la roca y como siempre, piedra rompe
tijeras.
Un esquema se presenta a continuación:

Figura 3: Esquema RPSLS

2
Para la implementación se sugiere hacer uso de los números pseudo aleatorios
generados por C.
Para crear uno, utilice el siguiente código:
#include <time . h>
#include <s t d i o . h>

int main ( )
{
srand ( time (NULL ) ) ;
int r = rand ( ) ;
}
Se sugiere también asignar a cada elección un número (por ejemplo 0: piedra,
1: papel, 2: tijera, 3: lagarto, 4: spock). La idea del programa es que el computador
haga una elección aleatoria entre todas las opciones, y el usuario haga otra elección
y el programa diga adecuadamente quién es el ganador. O sea, el usuario juega
RPSLS con el computador. Piense en cómo acotar los números aleatorios a un ran-
go que pueda ser utilizado para el propósito del programa (utilice adecuadamente
el operador módulo).
Para elegir al ganador, también hay muchas opciones, sin embargo se sugiere
utilizar la siguiente elección número - opción: 0: piedra, 1: Spock, 2: papel, 3:
lagarto, 4: tijeras. Dibuje un cı́rculo y reparta las opciones. En la hora de las 12
debe ir piedra, luego spock, papel, lagarto y tijeras. Note que ordenándolos de
esta forma, el elemento al que se mire siempre derrotará a los dos siguientes vistos
contra-reloj. Y será derrotado por los dos siguientes en vistos en dirección de las
agujas del reloj. O sea, si la diferencia (numérica) entre dos opciones es 1 o 2,
gana la primera opción. Si la diferencia es 3 o 4, gana la segunda opción. Por
ejemplo, si queremos comparar papel (2) y piedra (0), su diferencia es 2 − 0 = 2
por lo tanto gana el primer elemento (papel). Sin embargo, esta idea tiene un
pequeño problema: podemos tener números negativos como resta y el análisis se
complica. Pero podemos acotar la diferencia a que siempre esté en el rango 0-4.
¿Cómo podemos hacer esto? Pista: nuevamente, operador módulo.
Como siempre y como se hizo en la práctica, asegúrese de que el usuario ingrese
una opción válida. De lo contrario, pregunte un nuevo valor al usuario.
Para que sea más fácil visualizar el programa y sea más entretenido, impri-
miremos las elecciones en pantalla de los usuarios. Para ello, es necesario utilizar
strings. Sin embargo, como aún no se ha visto en el curso, se entrega un trozo de
código que imprimirá en pantalla las elecciones del computador y usuario. Cuando
la implemente, no olvide incluir string.h.

3
Figura 4: Código a utilizar para imprimir elecciones

En el caso del programa ejemplo, note que al jugador se le asigna Piedra y al


computador Spock, por lo que el computador gana en este caso. Simplemente copie
y pegue el código donde sea necesario para que se imprima en pantalla las elecciones
que hizo cada jugador. Es necesario ser precavido con los nombres utilizados. Si
copia y pega el código debe utilizar los mismos nombres en su programa para los
números ingresados (player num, comp num).

4
El output de su programa deberı́a verse ası́:

Figura 5: Output problema 3

Se insiste en utilizar esta idea para la implementación, de lo contra-


rio se podrı́a caer en un programa con demasiados bugs o demasiado
complejo.

Você também pode gostar