Autor: Edison Del Rosario

  • 3Eva_IIT2009_T1 Funciones combinatoria y factorial

    3ra Evaluación II Término 2009-2010. Febrero 23, 2010 /ICM00794

    Tema 1 (20 puntos) La Combinatoria se define como: combinatoria formula

    a. Escriba en una función llamada combinatoria(n,k), la cual retorna el número posible de combinaciones de n objetos tomando k de ellos.

    b. Implemente la función factorial(n) en forma recursiva.

    c. Realice una prueba de escritorio para combinatoria(5,3).

    Rúbrica: Definición de la función (5 puntos), bloque de procedimiento (7 puntos), función recursiva (5 puntos), prueba de escritorio (3 puntos)

  • 3Eva_IT2009_T4 Juego de Trincheras

    3ra Evaluación I Término 2009-2010. Septiembre 15, 2009 /ICM00794

    Tema 4 (35 puntos). Realice un simulador de juego de guerra para trincheras entre el INVASOR (computador) y un DEFENSOR con mortero (usuario) en un tablero de 8x8, con las siguientes reglas:

    1. El INVASOR ubica aleatoriamente 5 soldados entre las últimas 4 filas.
    2. En cada instante de tiempo cada soldado se desplaza aleatoriamente una trinchera hacia arriba, abajo, izquierda o derecha dentro del tablero.
    3. Un soldado no puede moverse a una trinchera ocupada.
    4. El DEFENSOR ingresa las coordenadas de la trinchera a la cual disparar, si había un invasor lo elimina.
    5. El defensor dispone de 15 municiones.
    Trincheras (fila, columna)
    1 2 3 4 5 6 7 8
    1
    2
    3
    4
    5 1 1
    6 1 1
    7 1
    8
    >> Dispara mortero fila: 6
    >> columna: 4
    >> Quedan: soldados=4 ,
    bombas=14
    invadido=0

    El juego termina cuando:

    • Todos los invasores han sido destruidos,
    • el defensor no tenga municiones, o
    • un invasor haya llegado a la primera línea.

    Rúbrica: ubicación aleatoria y no repetida de invasores en tablero (10 puntos), movimiento de invasores dentro del tablero (10 puntos), control de municiones e invasores eliminados (5 puntos), integración del juego(10 puntos)

  • 3Eva_IT2009_T3 Aspirantes a escuela de policía

    3ra Evaluación I Término 2009-2010. Septiembre 15, 2009 /ICM00794

    Tema 3 (30 puntos). Debido a la masiva afluencia de aspirantes a policías, la Escuela de Formación de Policía le ha requerido hacer un programa para registrar y administrar los aspirantes de acuerdo al menú y la información que se muestra a continuación:

    Menú
    1. Registrar Aspirante
    2. Promedio de edad
    3. Total por género
    4. Total por instrucción
    5. Salir
    Aspirante
    Nombre Edad Género Instrucción
    Juan 25 1 (Masculino) 3 (Superior)
    María 19 2 (Femenino) 2 (Secundaria)
    Pedro 19 1 (Masculino) 1 (Primaria)

    Referencia: Masiva afluencia de aspirantes a policías provoca caos en la PJ. www.eluniverso.com 14/Sep./2009

    Rúbrica: Definición de estructura o archivo y uso en el programa (10 puntos), realización de menú (5 puntos), edad promedio de aspirantes (5), conteo por genero/instrucción (10 puntos).

  • s3Eva_IT2009_T3 Aspirantes a escuela de policía

    Ejercicios: 3Eva_IT2009_T3 Aspirantes a escuela de policía

    Propuesta de solución en Python: py_pdf, también con versión en matlab: m_pdf

    Para resolver el problema, se usa la estructura básica para un menú y una estructura de datos con los campos de la tabla aspirante. El promedio de edad es la suma de la columna edad dividido para el número de registros. En los casos de totales por género e instrucción se usarán contadores.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2009_T3 Aspirantes a escuela de policia
    # Propuesta de solucion: edelros@espol.edu.ec
    # Tarea: Desarrollar caso 3, Contar por genero
    
    import numpy as np
    
    # Tabla usada es aspirante
    aspirante = []
    n = 0
    opcion = 0
    while not(opcion==5):
        print('1. Registra aspirante')
        print('2. Promedio de edad')
        print('3. Total por genero')
        print('4. Total por instruccion')
        print('5. Salir')
        
        opcion = int(input('cual opcion: '))
        
        if (opcion==1):
            print('  Registra aspirante')
            texto  = input('           nombre: ')
            numero = int(input('             edad: '))
            gen    = int(input('     genero [1,2]: '))
            escolar   = int(input('instruccion [1,3]: '))
            candidato = {'nombre':texto,
                         'edad':numero,
                         'genero':gen,
                         'instruccion':escolar}
            aspirante.append(candidato)
            n = n + 1
            
        if (opcion==2):
            print('  Promedio de edad')
    
            # n=len(aspirante)
            suma = 0
            fila = 0
            while not(fila>=n):
                suma = suma + aspirante[fila]['edad']
                fila = fila + 1
            promedio = suma/n
            print(promedio)
            
        if (opcion==3):
            print('  Total por genero')
            # TAREA: Contar por genero
            
        if (opcion==4):
            print('  Total por instruccion')
            
            # No se usará la fila 0 de veces
            veces = np.zeros(3+1,dtype=int)
            fila = 0
            while (fila<n):
                k = aspirante[fila]['instruccion']
                veces[k] = veces[k]+1
                fila = fila + 1
    
            # Salida
            print('   primaria: '+str(veces[1]))
            print(' segundaria: '+str(veces[2]))
            print('   superior: '+str(veces[3]))
            
        if (opcion==5):
            print(' gracias por usar el software ')
    
        if (opcion<1 or opcion>5):
            print(' *** NO ES OPCION DISPONIBLE ***')
    

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

    ejercicios resueltos Python 3eva_it2009_t3 py_pdf

    ejercicios resueltos Matlab 3eva_it2009_t3 pdf

  • 3Eva_IT2009_T2 Seleccionar billetes de cajero automático

    3ra Evaluación I Término 2009-2010. Septiembre 15, 2009 /ICM00794

    Tema 2 (20 puntos). Un cajero automático requiere de una función billetes(cantidad) que reciba una cantidad de dólares (número entero) y encuentre su equivalente, usando la menor cantidad de billetes de 50, 20, 10, 5, 1, entregando el resultado en un vector.

    Ejemplo:
    >> billetes(77)
     ans= 1, 1, 0, 1, 2

    Rúbrica: Definir correctamente la función (5 puntos), vector de equivalentes (10 puntos), resultados (5 puntos)

  • s3Eva_IT2009_T2 Seleccionar billetes de cajero automático

    Ejercicio3Eva_IT2009_T2 Seleccionar billetes de cajero automático

    El algoritmo requiere la cantidad como un número entero.

     cantidad=77

    Se obtiene el número de billetes por denominación como cociente de cantidad y la de nominación en forma descendente [50,20,10,5,1]

    billetes50 = cantidad//50
    

    Por cada operación anterior se debe obtener el saldo, restando el valor de los billetes por denominación por la cantidad o saldo anterior

    saldo = cantidad-50*(billete50)
    

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2009_T2 Seleccionar billetes de cajero automático
    # Propuesta en forma de programa. edelros@espol.edu.ec.
    
    # INGRESO
    cantidad = int(input('Cantidad solicitada: '))
    
    # PROCEDIMIENTO
    
    # cociente O división entera //
    billete50 = cantidad//50
    saldo     = cantidad-50*(billete50)
    billete20 = saldo//20
    saldo     = saldo-20*(billete20)
    billete10 = saldo//10
    saldo     = saldo-10*(billete10)
    billete05 = saldo//5
    billete01 = saldo-5*(billete05)
    
    # Salida
    print ('de 50:',billete50)
    print ('de 20:',billete20)
    print ('de 10:',billete10)
    print ('de 05:',billete05)
    print ('de 01:',billete01)
    

    Nota: Si ha completado la unidad 4, realice el ejercicio usando un vector denominación de billetes = [50,20,10,5,1] par obtener el resultado.

    Algoritmo como función, si ya ha completado la unidad 5.

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2009_T2 Seleccionar billetes de cajero automático
    # Propuesta función. edelros@espol.edu.ec.
    import numpy as np
    
    def billete(cantidad):
    
        # division entera o cociente //
        billete50 = cantidad//50
        saldo     = cantidad - 50*(billete50)
        billete20 = saldo//20
        saldo     = saldo - 20*(billete20)
        billete10 = saldo//10
        saldo     = saldo - 10*(billete10)
        billete05 = saldo//5
        billete01 = saldo - 5*(billete05)
    
        # define variable de salida
        entrega    = np.array([0, 0, 0, 0, 0], int)
        entrega[0] = billete50
        entrega[1] = billete20
        entrega[2] = billete10
        entrega[3] = billete05
        entrega[4] = billete01
    
        return (entrega)
    

    Propuesta de solución en Python: y también incluye versión en matlab

    ejercicios resueltos Python 3eva_it2009_t2 pdf

    ejercicios resueltos Matlab 3eva_it2009_t2 pdf

  • 3Eva_IT2009_T1 Verificar todas las vocales en palabra

    3ra Evaluación I Término 2009-2010. Septiembre 15, 2009 /ICM00794

    Tema 1 (15 puntos). Realice la función todavocal(palabra), la cual recibe una palabra y determine si contiene una vez cada una de las vocales. Ejemplo:

     >> todavocal('ecuatoriano')    ans=0
     >> todavocal('murcielago')     ans=1

    Nota: la palabra 'ecuatoriano' tiene dos veces la 'a', por lo que el resultado es 'falso' ó  0.

    Rúbrica: Definir correctamente la función (5 puntos) Buscar y contar cada Vocal (5 puntos), respuesta integral (5 puntos)

  • 3Eva_IIT2008_T4 Derivar pacientes del Hospital IESS

    3ra Evaluación II Término 2008-2009. Marzo 3, 2009 /ICM00794

    Tema 4 (30 puntos). Debido al incremento de pacientes atendidos por el Hospital del IESS, para el año 2009 se contrató atención externa en otros hospitales de varios tipos de tratamiento.

    Para llevar un control de costos se requiere disponer de un programa que registre: a los pacientes, hospitales a los que se los envía y el tipo de atención médica que recibirán, realizando las actividades con el siguiente menú:

    1. Ingreso de Paciente
    2. Registro de Hospitales
    3. Hospital asignado a Paciente
    4. Lista de Total pacientes a otro Hospital
    5. Salir
    Paciente
    i Nombre Tratamiento Asignado
    1 Juan Diálisis 3
    2 María Cesárea 2
    3 Pedro Radioterapia 1
    ... ... ... ...
    Hospital
    j Nombre Tratamiento
    1 SOLCA Radioterapia
    2 Clínica Guayaquil Cesárea
    3 Hosp. Roberto Gilbert Diálisis
    4 Clínica Alcivar Diálisis

    Referencia: “IESS compra cada vez más servicios de salud a clínicas por falta de obras”. Marzo 02, 2009. www.eluniverso.com

    Rúbrica: Menú funcional: 10 puntos, Estructuras y registro de datos: 10 puntos, Total de pacientes a otro hospital en un vector: 10 puntos.

  • s3Eva_IIT2008_T4 Derivar pacientes del Hospital IESS

    Ejercicio: 3Eva_IIT2008_T4 Derivar pacientes del Hospital IESS

    Propuesta de solución en Python, también se adjunta versión en matlab.pdf

    Desarrollar el menú de acuerdo a los ítems propuestos. Usar una estructura para cada tabla. Realizar el registro de pacientes de forma no secuencial, es decir, iniciar el programa con cero pacientes (n=0) e incrementar una fila (n+1) por el uso del caso 1. En el caso 4, solo se muestra la lista de pacientes asignados a un hospital.

    Tarea: Desarrollar un arreglo de contadores de pacientes para cada hospital en el caso 4.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IIT2008_T4 Derivar pacientes del Hospital IESS
    
    paciente = []
    hospital = []
    
    opcion   = -1
    while not(opcion =='5'):
        print(' 1. Ingreso de Paciente')
        print(' 2. Registro de Hospitales')
        print(' 3. Hospital asignado a Paciente')
        print(' 4. Lista Total pacientes a otro Hospital')
        print(' 5. Salir')
    
        opcion= input('cual opcion: ')
    
        if (opcion == '1'):
            print(' ----- 1. Ingreso de Paciente')
            ced = input('cedula : ')
            nom = input('nombre: ')
            tra = input('tratamiento: ')
            asg = int(input('asigna: '))
    
            paciente.append({'cedula':ced,
                             'nombre': nom,
                             'tratamiento': tra,
                             'asigna': asg})
    
        if (opcion =='2'):
            print(' ----- 2. Registro de Hospitales')
            nom = input('nombre hospital: ')
            tra = input('Tratamiento: ')
    
            hospital.append({'nombre': nom,
                             'tratamiento':tra})
    
        if (opcion =='3')
            print(' -----  3. Hospital asignado a Paciente')
            ced = input('cedula : ')
            n = len(paciente)
            i = 0
            encontre = -1
            while not(i>n or encontre>=0)
                if (ced == paciente[i]['cedula']):
                    encontre = i
                i = i+1
            if (encontre>=0):
                cual = paciente[encontre]['asigna']
                print('fue transferida a: ', hospital[cual]['nombre'])
            else:
                print('el paciente no se ha ingresado...')
    
        if (opcion=='4'):
            print(' ----- 4. Lista de Total pacientes a otro Hospital')
            cual = int(input('cual hospital [numero] : '))
            while not(cual>=0  and cual<=len(hospital)):
                cual = int(input('cual hospital [numero] : '))
            n = len(paciente)
            i = 0
            while not(i>=n):
                if (cual == paciente[i]['asigna']):
                    print(paciente[i]['nombre'])
                i= i+1
    
        if (opcion == '5'):
            print('gracias por venir al IESS..')
            print('usuario@espol.edu.ec')
    

    ejercicios resueltos Matlab 3eva_iit2008_t4 pdf

  • 3Eva_IIT2008_T3 Funciones más caro y más barato

    3ra Evaluación II Término 2008-2009. Marzo 3, 2009 /ICM00794

    Tema 3 (25 puntos). Crear las funciones mascaro(v,n) y masbarato(v,n) que reciban un vector variación() con n valores, encuentre cual fue el elemento con mayor valor y menor valor respectivamente.

    Ejemplo: Las funciones se podrán utilizar con el vector “variación” del tema anterior y mostrar lo siguiente:

    >> mascaro(variación,6) 
    respuesta=6
    >> masbarato(variación,6) 
    respuesta=3

    Rúbrica: definición de funciones: 5 puntos, algoritmos: 10 puntos cada uno