Autor: Edison Del Rosario

  • s3Eva_IT2007_T1 Máquina tragamonedas

    Ejercicio3Eva_IT2007_T1 Máquina tragamonedas

    [ algoritmo ] [ diagrama flujo ]

    Considere el siguiente algoritmo de introducción al tema, Simplificando el ingreso del número por teclado:

    # 3ra Evaluación I Término 2007
    # Tema 1. Juego con maquina tragamonedas
    
    # INGRESO
    numero = int(input('numero abc:'))
    
    # PROCEDIMIENTO
    c = numero%10
    numero = numero//10
    b = numero%10
    numero = numero//10
    a = numero
    
    premio = 0
    if ((a==b) and (b==c) and(a==c)):
        premio = 20
    if ((a==b)and (a!=c)) or ((a==c) and (a!=b)) or ((b==c) and (b!=a)):
        premio = 10
    
    # SALIDA
    print(premio)
    

    Luego de revisar el algoritmo: ¿se comprende mejor la necesidad de usar cocientes y residuos? ¿considera viable el uso e este segundo algoritmo?

    [ algoritmo ] [ diagrama flujo ]
    ..


    Algoritmo en Python

    usando aleatorios sin Cocientes y Residuos

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2007_T1 Máquina tragamonedas
    # Propuesta: edelros@espol.edu.ec
    
    import random as rnd
    
    # INGRESO
    monedas = int(input(" Cuantas monedas tiene?: "))
    
    # PROCEDIMIENTO
    caja = 15
    trio = 0
    par  = 0
    
    turno = 0 
    while (monedas>=5 and caja>=15):
        turno = turno + 1
        monedas = monedas - 5
        caja = caja + 5
    
        # sorteo de números
        # entero(aleatorio*posibles) + inicio
        a = int(rnd.random()*10) + 0
        b = int(rnd.random()*10) + 0
        c = int(rnd.random()*10) + 0
        
        if (a==b and b==c and c==a):
            caja = caja - 20
            monedas = monedas+20
            trio = trio + 1
        else:
            if (a==b or b==c or c==a):
                caja = caja - 10
                monedas = monedas+10
                par  = par + 1
    
    # SALIDA
    print(" Turnos jugados: ", turno)
    print(" Trios: ", trio)
    print(" Pares: ", par)
    print(" monedas jugador: ", monedas)
    

    Ejemplo:

    >>> 
     Cuantas monedas tiene?: 25
     Turnos jugados:  1
     Trios:  0
     Pares:  1
     monedas jugador:  30
    >>> 
     Cuantas monedas tiene?: 30
     Turnos jugados:  5
     Trios:  0
     Pares:  3
     monedas jugador:  35
    >>> 
    

    Presentadas las dos formas de algoritmos, ¿podría presentar una versión mejorada que integre lo mejor de las dos soluciones?

    [ algoritmo ] [ diagrama flujo ]
    ..


    Diagrama de Flujo

    diagrama de flujo TragaMonedas 02

    [ algoritmo ] [ diagrama flujo ]


    Propuesta de solución con diagrama de flujo, Python y otra versión con Matlab

    ejercicios resueltos Python 3eva_it2007_t1 pdf

    ejercicios resueltos Matlab 3eva_it2007_t1 pdf

  • 3Eva_IIT2006_T4 Beneficiarios de Bono Desarrollo Humano

    3ra Evaluación II Término 2006-2007, Febrero 6, 2007 /ICM00794

    Tema 4. (30 puntos) El Bono de Desarrollo Humano se ofrece a madres solteras, ancianos y discapacitados, de los cuales se registra los nombres, apellidos, provincia, ciudad y tipo.

    Realice un programa para ayudar al Ministerio de Bienestar social para gestionar el registro de los beneficiarios y que tenga el siguiente menú:

    1. Ingresar un beneficiario Nombre, apellido, provincia, ciudad, tipo y pagado.
    2. Mostrar el número de registrados por provincia
    3. Mostrar el número de registrados por tipo
    4. Mostrar el total de beneficiarios, y el monto por pagar.
    5. Salir
    Ejemplo de lista de beneficiarios:
    Nombre Apellido Provincia Ciudad Tipo Pagado
    Juan Piguave Guayas Playas (2) Anciano 0
    Maria Gomez Manabí Manta (1) Madre Soltera 30
    Pedro Guerra Pichincha Sto. Domingo (3) Discapacitado 30

    Nota: Puede codificar a número las provincias y el tipo de beneficiario para facilitar el conteo.

  • 3Eva_IIT2006_T3 Números Primos más cercanos

    3ra Evaluación II Término 2006-2007, Febrero 6, 2007 /ICM00794

    Tema 3. (30 Puntos) Dada una lista de n números, obtener el número primo más cercano a cada uno de los números. En caso de que el número de la lista sea un número primo, ese número es el más cercano.

    a) Escriba una función primo(n) que determine si el numero n es primo.

    b) Realice un programa que revise de una lista, los números enteros, los inmediatos inferiores y superiores hasta encontrar un número primo y llene la tabla resultante.

    Ejemplo: Sea n = 6
    Números Primo superior Primo inferior
    100 101 97
    246 251 241
    2 2
    333 337 331
    2007 2011 2003
  • 3Eva_IIT2006_T2 Generar triángulo de Pascal

    3ra Evaluación II Término 2006-2007, Febrero 6, 2007 /ICM00794

    Tema 2. (20 Puntos) El triángulo de Pascal, es un triángulo de números enteros, infinito y simétrico.

    triángulo de Pascal

    Se genera de arriba hacia abajo con la propiedad de que sus extremos siempre son 1, y que sus números interiores son la suma de los dos inmediatos superiores.

    Escriba un programa en matlab que genere un triángulo de Pascal para n filas, y muestre la suma de sus números pares.


    Sugerencia: Usando una matriz cuadrada, en la primera columna y la diagonal llene de unos. Luego realice las operaciones en la parte triangular inferior.

     

  • 3Eva_IIT2006_T1 Crear usuarios en lista de nombres

    3ra Evaluación II Término 2006-2007, Febrero 6, 2007 /ICM00794

    Tema 1. (20 Puntos) Los “nombres de usuario” para una compañía se crean a partir de los nombres y el apellido paterno de sus empleados conformado de ocho (8) letras, usando una letra de cada nombre y el resto de su apellido.

    a) Realice una función en matlab user(nombre1,nombre2,apellidop) que reciba los nombres y apellido paterno de un empleado y devuelva su “nombre de usuario”.

    b) Escriba un programa en Matlab que registre en una lista los nombres de los n empleados de la compañía y muestre el listado de los “nombres de usuario”

    Ejemplo:
    Nombre1 Nombre2 Apellido Paterno Usuario
    Juan Pedro Rodriguez jprodrig
  • s3Eva_IIT2006_T1 Crear usuarios en lista de nombres

    Ejercicio: 3Eva_IIT2006_T1 Crear usuarios en lista de nombres

    Propuesta de solución en Python:

    Ejemplo:
    >>> 
    cuantos empleados: 3
    primer nombre: JUAN
    segundo nombre: PEDRO
    apellido paterno: RODRIGUEZ
    primer nombre: MARIA
    segundo nombre: ROSA
    apellido paterno: PEREZ
    primer nombre: CARLOS
    segundo nombre: JOSE
    apellido paterno: CASTRO
    jprodrig
    mrperez
    cjcastro

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IIT2006_T1 Crear usuarios en lista de nombres
    # propuesta: edelros@espol.edu.ec
    
    def user(nombre1,nombre2,apellidop):
        z = ''
        i = 0
        z = z+nombre1[i]
        z = z+nombre2[i]
    
        # copiar letras del apellido
        n = len(apellidop)
    
        # Revisando si no hay suficientes letras en el apellido
        i = 0
        while not(i>=6 or i>=n):
            z = z+apellidop[i]
            i = i+1
        z = z.lower()
        return(z)
    
    # PROGRAMA
    m = int(input('cuantos empleados: '))
    empleado = []
    i = 0
    while not(i>=m):
        nombre1 = input('primer nombre: ')
        nombre2 = input('segundo nombre: ')
        apellidop = input('apellido paterno: ')
        registro = {'nombre1':nombre1,'nombre2':nombre2,
                  'apellidop':apellidop,'usuario':''}
        empleado.append(registro)
        i = i+1
    
    # PROCEDIMIENTO
    i = 0
    while not(i>=m):
        a = empleado[i]['nombre1']
        b = empleado[i]['nombre2']
        c = empleado[i]['apellidop']
        z = user(a,b,c)
        empleado[i]['usuario'] = z
        i = i+1
    
    # SALIDA
    i = 0
    while not(i>=m):
        print(empleado[i]['usuario'])
        i = i + 1
    
  • 3Eva_IT2006_T4 Juego planta bombas (buscaminas)

    3ra Evaluación I Término 2006-2007, Septiembre 12, 2006 /ICM00794

    Tema 4. (30 puntos) Un juego de guerra consiste en delimitar el área del enemigo para ser explorada por paracaidistas en ejercicios de prueba y error.

    El enemigo planta bombas en el área para protección a prueba de paracaidistas.

    El juego consiste en enviar un paracaidista a una coordenada del área enemiga y si aterriza exitosamente, explore el área a su alrededor e informe al centro de comando, cuántas bombas existen alrededor de su coordenada.

    a) Realice una función plantabombas(m, n) que dada una cantidad de m bombas, coloque en el área definida por una matriz cuadrada de tamaño las bombas de manera aleatoria y no repetida.
    Considere que m siempre es menor que n2.

    b) Realice un programa, que pida las coordenadas de aterrizaje de un paracaidista, utilice la función del tema anterior, valide si el paracaidista logro llegar a salvo, e informe de cuantas bombas existen a su alrededor.

    Nota: Las coordenadas no pueden ser de los límites de la matriz.

    x\y 1 2 3 4
    1 0 1 1
    2 0 paracaidista 0
    3 1 0 1
    4
    Bombas cercanas a matriz[2,2]=4
  • s3Eva_IT2006_T4 Juego planta bombas (buscaminas)

    Ejercicio3Eva_IT2006_T4 Juego planta bombas (buscaminas)

    Nota: contiene tareas por realizar, revisar comentarios en las instrucciones

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2006_T4 Juego planta bombas (buscaminas)
    # propuesta: edelros@espol.edu.ec
    import numpy as np
    import random as rnd
    
    def plantabombas(m,n):
        campo = np.zeros(shape=(n,n),dtype=int)
        
        bomba = 1
        while not(bomba>m):
            fila = int(rnd.random()*n)+0
            columna = int(rnd.random()*n)+0
            
            if (campo[fila,columna] == 0):
                campo[fila,columna] = 1
                bomba = bomba + 1
                
        return(campo)
    
    # PROGRAMA --------------
    
    # INGRESO
    n = int(input('tamaño de tablero[n,n]: '))
    m = int(input('cantidad de minas:'))
    
    # TAREA: validar que la cantidad de minas
    # sea menor que casillas en tablero
    
    f = int(input('coordenada fila:'))
    while not(f>0 and f<(n-1)):
        f = int(input('coordenada fila:'))
    
    c = int(input('coordenada columna:'))
    while not(c>0 and c<(n-1)):
        c = int(input('coordenada columna:'))
    
    # PROCEDIMIENTO
    # Crear tablero con bombas
    territorio = plantabombas(m,n)
    
    # solamente si no hay bomba al aterrizar reporta
    if (territorio[f,c] == 0):
        vertical   = territorio[f-1,c]+territorio[f+1,c]
        horizontal = territorio[f,c-1]+territorio[f,c+1]
        # TAREA: Completar las casillas en diagonal
        reporta = vertical + horizontal
    else:
        reporta = -1
    
    # SALIDA
    print('reporte de llegada: ',reporta)
    print('territorio: ')
    print(territorio)
    

    Ejemplo, aún falta desarrolar la parte de tarea:

    tamaño de tablero[n,n]: 8
    cantidad de minas:40
    coordenada fila:3
    coordenada columna:3
    reporte de llegada:  4
    territorio: 
    [[1 1 0 1 1 1 1 1]
     [1 0 1 0 0 1 1 1]
     [0 1 1 1 1 1 1 0]
     [1 1 1 0 1 1 0 1]
     [0 1 0 1 1 1 0 0]
     [1 0 0 0 1 0 0 0]
     [1 0 1 0 0 1 1 1]
     [1 1 0 1 1 0 0 1]]
    >>>
  • 3Eva_IT2006_T3 Tabular cuotas y saldo de deuda

    3ra Evaluación I Término 2006-2007, Septiembre 12, 2006 /ICM00794

    Tema 3. (25 puntos) Una empresa de venta y financiación de vehículos ofrece a sus clientes planes de pago con cuotas mensuales.

    El vendedor dispondrá de un programa que calcule la cantidad de meses que le tomará a su cliente pagar la totalidad de la deuda de acuerdo a los parámetros definidos.

    p: Precio de Vehículo
    r: Tasa de interés mensual en porcentaje
    cuota: Cuota mensual

    a) Realice una función saldo(r, cuota, saldoanterior) que calcule el saldo mensual conociendo la tasa de interés, la cuota y el saldo anterior.

    b) Realice un programa que usando la función saldo, determine en cuántos meses el cliente terminaría de pagar su deuda.

    Mes Intereses Cuota Saldo
    0 8.000,00
    1 80,00 300,00 7.780,00
    2 77,80 300,00 7.557,80
    3 75,58 300.00 saldo
    4 0
  • 3Eva_IT2006_T2 Intercalar palabras pastestring(a,b,p)

    3ra Evaluación I Término 2006-2007, Septiembre 12, 2006 /ICM00794

    Tema 2. (25puntos) Implemente una función en matlab llamada PasteString(a, b, p) que dadas dos cadenas a y b, inserte después de la posición p de primera, a la segunda cadena y retorne la nueva cadena.

    Ejemplo:
    Si la primera cadena es “FUNDAMENTOS”, 
    la segunda “PROG” y p es 4, 
    el resultado será “FUNDPROGAMENTOS”