Autor: Edison Del Rosario

  • 3Eva_IT2010_T3 Asignar de asientos en un avión

    3ra Evaluación I Término 2010-2011, Septiembre 14, 2010 /ICM00794

    Tema 3. (50 puntos) Una aerolínea requiere de un programa para administrar la ocupación de un vuelo por medio de las siguientes opciones en el menú mostrado.

    1. Compra de Boleto.- Registra datos de cada pasajero: cedula y nombre, siempre que exista disponibilidad de asientos. Puede usar la función ocupados() del tema anterior.
    2. Asignar asiento.- Se solicita la identificación del pasajero y la ubicación deseada por fila y columna, asignando la posición solo si está disponible. En el caso que la ubicación deseada este ocupada, se le asigna una libre usando función ubicalibre() del tema anterior. La ubicación final del pasajero se debe registrar también en la estructura de datos del pasajero.
    3. Mostrar ocupación de asientos.- permite revisar cuáles asientos se encuentran ocupados (1) o vacios (0).
    4. Lista de Pasajeros en el vuelo.- Muestra la información de pasajeros confirmados (con asiento asignado).
    5. Salir
    Pasajero
    Cedula Nombre Fila Columna
    8765 Juan 3 4
    6543 Pedro 0 0
    2345 María 4 2
    .... ...

    Sugerencia: Para el control de asientos, usar una matriz asientos(n,m) que indica: ocupados (1) o vacios (0). Al inicio se consulta el número de filas y columnas de asientos en el avión.

    Rúbrica: Estructura de Datos (10 puntos). Menú estructurado (5 puntos).Opción 1(10 puntos). Opción 2 (10 puntos). Validación de asientos (5 puntos). Pasajeros confirmados (5 puntos). Uso de funciones (5 puntos).

  • 3Eva_IT2010_T2 Funciones ocupados y ubica libre en matriz

    3ra Evaluación I Término 2010-2011, Septiembre 14, 2010 /ICM00794

    Tema 2. (25 puntos) La matriz asientos(n,m) corresponde a la pre-asignación de asientos de una avión administrado por una aerolínea, que utiliza la nomenclatura de Ocupado(1) y vacio(0).

    Asientos(i,j)
    ventana pasillo pasillo ventana
    1 2 ... 3 m=4
    Fila 1 0 0 0 0
    2 0 0 0 0
    3 0 0 0 1
    4 0 1 0 0
    ...
    19 0 0 0 0
    n=20 0 0 0 0

    Realice una función ocupados(matriz asientos) que reciba una matriz de asientos y entregue la cantidad de asientos ocupados.

    Realice una función ubicalibre( matriz asientos) que entregue la ubicación del primer asiento desocupado en el caso de que existan.

    Rúbrica: Definición de función (5 puntos). Procedimiento de función ocupados (8 puntos).Procedimiento de función ubicalibre (12 puntos)


    matriz = [[1,1,1,1],
              [1,0,0,0],
              [0,1,0,1]]
    
    ocupados:  7
    primer libre encontrado:  [1, 1]
    >>>
  • s3Eva_IT2010_T2 Funciones ocupados y ubica libre en matriz

    Ejercicio: 3Eva_IT2010_T2 Funciones ocupados y ubica libre en matriz

    resultado obtenido:

    matriz = [[1,1,1,1],
              [1,0,0,0],
              [0,1,0,1]]
    
    ocupados:  7
    primer encontado:  [1, 1]
    >>> 
    

    Algoritmo en Python

    # 3Eva_IT2010_T2 Funciones ocupados y ubica libre en matriz
    # resolver sin usar numpy
    import numpy as np
    
    def ocupados(matriz):
        suma = np.sum(matriz)
        return(suma)
    
    def ubicalibre(matriz):
        matriz = np.array(matriz)
        tamano = np.shape(matriz)
        n = tamano[0]
        m = tamano[1]
        encontre = 0
        a = np.NaN
        b = np.NaN
        i = 0
        while i<n and encontre==0:
            j = 0
            while j<m and encontre ==0:
                if matriz[i,j] == 0:
                    encontre = 1
                    a = i
                    b = j
                j = j+1
            i = i + 1
        return([a,b])
    
    # PROGRAMA
    matriz = [[1,1,1,1],
              [1,0,0,0],
              [0,1,0,1]]
    
    # PROCEDIMIENTO
    aforo = ocupados(matriz)
    libre = ubicalibre(matriz)
    
    # SALIDA
    print("ocupados: ", aforo)
    print('primer encontado: ',libre)
    
  • 3Eva_IT2010_T1 Ecuación Verhulst

    3ra Evaluación I Término 2010-2011, Septiembre 14, 2010 /ICM00794

    Tema 1 (25 puntos) El crecimiento de población de varios países fue presentado por el matemático-biólogo Verhulst mediante un modelo matemático denominado ecuación logística.

    P(t) = \frac{a P_0}{b P_0 + (a-b P_0)e^{-at}}

    El valor de Po es la población inicial, y las variables a y b son factores de crecimiento característicos de ese país.

    Realice una función logística(Po,a,b,t) que calcule el valor de P para el tiempo t.

    Escriba un programa que solicite valores para Po, a, b, t y usando la función logística muestre en un arreglo los valores de crecimiento de la población en el periodo comprendido desde 1 hasta t en incrementos unitarios.

    Finalmente el programa mostrará el valor de t para cuando la población supera el doble de su valor inicial.

    Rúbrica: Definición de la función (5 puntos). Arreglo de crecimientos (10 puntos) y muestra el valor de t requerido (10 puntos).

  • s3Eva_IT2010_T1 Ecuación Verhulst

    Ejercicio: 3Eva_IT2010_T1 Ecuación Verhulst

    Para probar el ejercico se usa po=1, a=0.5 b=0.02 y tiempo maximo = 40

    con el algoritmo se puede observar:

    poblacion inicial p0:1
    factor a:0.5
    factor b:0.02
    calcular en t:40
    tiempo:
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40]
    pi:
    [1.0, 1.6070209244539886, 2.5434661610272977, 3.9338336459524355, 5.885057578381894, 8.417395145518748, 11.39009430586252, 14.494961881174662, 17.366232541771218, 19.73763290519436, 21.51998720327935, 22.766959376324014, 23.596257413785583, 24.129351687331045, 24.464588393188883, 24.67249666532522, 24.80032998711217, 24.878512232622807, 24.92617278160938, 24.95516943765841, 24.972789690449925, 24.983489042065916, 24.98998299475044, 24.99392342119231, 24.996314016127226, 24.99776420806526, 24.998643875922703, 24.999177451612496, 24.999501092725076, 24.99969739506529, 24.999816459955184, 24.999888677013956, 24.999932479077533, 24.999959046446833, 24.999975160398368, 24.999984934014144, 24.999990862015494, 24.99999445753143, 24.99999663832259, 24.999997961039472, 24.99999876330789]
    >>>
    

    que produce la siguiente gráfica

    Algoritmo en Python

    # 3Eva_IT2010_T1 Ecuación Verhulst
    import numpy as np
    import matplotlib.pyplot as plt
    
    def f_logistica(p0,a,b,t):
        numerador = a*p0
        denominador = b*p0+(a-b*p0)*np.exp(-a*t)
        p = numerador/denominador
        return(p)
    
    # PROGRAMA ------
    # INGRESO
    p0 = float(input("poblacion inicial p0:"))
    a  = float(input("factor a:"))
    b  = float(input("factor b:"))
    t  = float(input("calcular en t:"))
    
    # PROCEDIMIENTO
    ti = []
    pi = []
    i = 0
    while i<=t:
        pi.append(f_logistica(p0,a,b,i))
        ti.append(i)
        i = i + 1
    
    # SALIDA
    np.set_printoptions(precision=3)
    print('tiempo:')
    print(ti)
    print('pi:')
    print(pi)
    
    # grafica
    plt.plot(ti,pi)
    plt.xlabel('ti')
    plt.ylabel('pi')
    plt.title('ecuacion logística')
    plt.show()
    

    Tarea, estimar el tiempo t cuando la población se duplica

  • 3Eva_IIT2009_T4 Registro salida vehículos en peaje

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

    Tema 4 (30 puntos) Realizar un programa para el control de salida/entrada de vehículos en la ciudad durante un feriado.

    Los datos del vehículo que se registran en los peajes son: placa, la hora y la dirección Salida/Entrada.

    Un vehículo que retorna tiene dos registros: salida, y entrada respectivamente; el orden contrario corresponde a un vehículo visitante.

    El control se lo realizará mediante el siguiente menú de opciones:

    ****Menú****
    1. Registro de Salida/Entrada
    2. Total de vehículos que han salido
    3. Listado de vehículos sin retornar
    4. Salir
    Vehículo
    placa hora salida/ entrada
    GAB123 07:00 Salida (1)
    GBC234 07:05 Salida (1)
    GAB123 16:05 Entrada (1)

    NOTA: Se supone los vehículos salen de la ciudad solo una vez. La hora se registra en formato de 24 horas.

    Rúbrica: menú (5 puntos), definición de estructura e ingreso de datos (10 puntos), Vehículos sin retorno/registros no repetidos (15 puntos).

  • 3Eva_IIT2009_T3 Convertir hora 12h a 24h

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

    Tema 3. (20 puntos) Realice una función hora24(texto) que reciba la hora en formato de 12 horas (hh:mm am/pm) y la convierta a un formato de 24 horas (hh:mm).

    Ejemplo:
    >> hora24(’08:30 pm’)
     ans= 20:30
    >> hora24(’10:30 am’)
     ans= 10:30

    Nota: El formato de hora se puede considerar tipo texto.

    Rúbrica: Definición de función (5 puntos), determinación de am/pm para ajuste de hora (7 puntos), ajuste de hora (8 puntos).

  • 3Eva_IIT2007_T3 Registro de Actores y Películas

    3ra Evaluación II Término 2007-2008. Febrero 26, 2008 /ICM00794

    Tema 3. (40 puntos) Elabore un programa para llevar el registro de Actores y películas con el siguiente menú:

    1. Ingresar Actor
    2. Ingresar Película
    3. Reporte de Película y Actor
    4. Salir

    Para ingresar un actor, crear una lista con el nombre ACTOR, la cual permitirá ingresar los siguientes datos para cada uno de m actores conocidos:

    ACTOR:
    Código del actor (Valor entero)
    Nombre del actor (30 caracteres máximo)

    Para ingresar una película, crear una lista con el nombre PELÍCULA, la cual permitirá ingresar los siguientes datos para cada una de las n películas

    PELICULA:
    Nombre (25 caracteres máximo)
    Código del actor principal (valor entero), debe ser validado de la lista anterior
    Tipo de película (D: Drama, C: Comedia, S: Suspenso, T: Terror)

    Para el reporte, muestre en la pantalla: el nombre de la película, el nombre del actor principal y el tipo de película. El reporte solicitado debe tener el siguiente formato:

    Película Actor Principal Tipo
    La mujer de mis pesadillas Ben Stiller Comedia
    Soy Leyenda Will Smith Drama
    Mr. Brooks Kevin Costner Terror
  • 3Eva_IIT2009_T2 Registrar alquiler de casilleros

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

    Tema 2. (30 puntos) La Asociación de Estudiantes administra un bloque de casilleros que contiene 6 filas y 10 columnas. casilleros en escuela

    Diseñe un programa que use celdas de una matriz para controlar el uso de estos casilleros con un menú que tiene las siguientes opciones:

    1. Asignar casillero: Ingresar el número de matrícula del estudiante en el casillero(f,c)
    2. Devolver casillero: Ingresar el número cero en el casillero(f,c)
    3. Consultar casillero: Mostrar el número de matrícula del estudiante en el casillero(f,c)
    4. Estadísticas: Mostrar el total de casilleros libres y asignados
    5. Salir

    casilleros tabla 02

    Nota: No se debe asignar un casillero a un estudiante que ya este ocupado.

    Rúbrica: Menú (5 puntos), asignación (5 puntos), devolución (5 puntos), consultar (5 puntos) estadísticas (5 puntos), programa integrado (5 puntos)

  • s3Eva_IIT2009_T2 Registrar alquiler de casilleros

    Ejercicio3Eva_IIT2009_T2 Registrar alquiler de casilleros

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

    Para implementar el menú se puede usar la estructura: if ... elif... elif... else.
    Un casillero de uso común se direcciona por fila y columna numeradas desde el 1, por lo que se realizará la corrección de desplazamiento al ingresar el dato de fila-1 y columna-1 para que sea transparente para el usuario.

    Tarea: Validar que los índices de casilla ingresados se encuentren dentro del rango de la matriz casilleros, pues si se ingresa valores fuera de rango el programa se detiene con un error.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IIT2009_T2 Registrar alquiler de casilleros
    # propuesta: edelros@espol.edu.ec
    # tarea: validar indices en rango de matriz
    
    import numpy as np 
    
    n = int(input('filas de casilleros: '))
    m = int(input('columnas de casilleros: '))
    
    # inicializa casilleros con ceros
    # usa fila y columna cero, desplazando el indice
    casillero = np.zeros(shape=(n,m),dtype=int)
    
    opcion = '0'
    while not(opcion=='5'):
        print('1. Asignar casillero')
        print('2. Devolver casillero')
        print('3. consultar casillero')
        print('4. Estadísticas')
        print('5. salir')
        
        opcion = input(' Cual opcion: ')
        
        if (opcion=='1'):
            print('ASIGNAR ')
            f = int(input('fila: '))
            c = int(input('columna: '))
            dato = int(input('dato:'))
            if (casillero[f-1,c-1]==0):
                casillero[f-1,c-1] = dato
                print('casillero asignado')
            else:
                print('** casillero ocupado, solicite otro.. **')
                
        elif (opcion=='2'):
            print('DEVOLVER')
            f = int(input('fila: '))
            c = int(input('columna: '))
            dato = int(input('dato:'))
            if (casillero[f-1,c-1]==dato):
                casillero[f-1,c-1] = 0
                print('casillero liberado')
            else:
                print('el casillero no corresponde al dato')
    
        elif (opcion=='3'):
            print('CONSULTAR')
            print(casillero)
    
        elif (opcion=='4'):
            print('ESTADISTICAS')
            ocupado = 0
            libre = 0
            for f in range(0,n,1):
                for c in range(0,m,1):
                    if (casillero[f,c]==0):
                        libre = libre + 1
                    else:
                        ocupado = ocupado + 1
            print('casilleros ocupados: '+str(ocupado))
            print('casilleros libres: '+str(libre))
    
        elif (opcion=='5'):
            print('gracias por usar el software')
    
        else:
            print('opcion no existe')
    

    ejercicios resueltos Python 3eva_iit2009_t2 pdf

    ejercicios resueltos Matlab 3eva_iit2009_t2 pdf