Autor: Edison Del Rosario

  • 2Eva_IT2010_T2 Operaciones infix - postfix

    2da Evaluación I Término 2010. Agosto 31, 2010 /ICM00794

    TEMA 2 (30 puntos) Las expresiones aritméticas en notación INFIX establece que en medio de los operandos (números) debe existir un operador aritmético conocido (+, –, *, /).  HP 42S

    Las expresiones aritméticas en notación POSTFIX establece que primero se colocan los operandos y luego el operador.
    Suponga que solamente tendrá como operandos aritméticos los números de una sola cifra.

    a) Escriba la función validainfix(cadena), la cual recibe una cadena de 3 caracteres para una operación aritmética y verifica que: los 2 operandos aritméticos están en las posiciones inicial y final; y existe un operador aritmético en el medio. La función devuelve 1 si es una cadena válida y 0 si no lo es.

    b) Escriba la función cambiapostfix(cadena), la cual recibe una cadena de 3 caracteres, previamente validada usando validainfix(cadena), y cambia la notación de INFIX a POSTFIX. En caso de que la validación no es correcta, se dará el mensaje de “error”.

    INFIX POSTFIX
    2 + 3 2 3 +
    9 - 6 9 6 -
    5 * 4 5 4 *
    8 / 7 8 7 /

    Rúbrica: Definición de funciones (5 puntos). Validación de números y operadores (15 puntos), cambio de notación (10 puntos).

  • 2Eva_IT2010_T1 Capacitación de empleados

    2da Evaluación I Término 2010. Agosto 31, 2010 /ICM00794

    TEMA 1 (30 puntos) El plan de capacitación de personal de una empresa consiste en impartir m cursos de varios temas para n empleados, quienes pueden participar en el orden que prefieran.

    Al final del mes, la participación de los empleados se registra en una matriz como completado (1) y no tomado (0).Realizar un programa que registre la participación de los empleados en los cursos, determine y muestre:

    a) ¿Cuáles empleados (número) tienen todos los cursos aprobados?, pueden ser varios empleados, y

    b) ¿Cuál fue el curso con más participantes?, considere solo uno.

    capacitacion (e,c) Curso
    empleado 1 2 3 completados
    1 1 0 0 1
    2 1 1 1 3
    3 0 0 1 1
    4 1 1 1 3
    n=5 0 0 0 ... 0

    Nota: Cada empleado participa una vez en cada curso.
    Rúbrica: Ingreso de datos en matriz (5 puntos), parte a) (15 puntos), parte b) (10 puntos).

  • 2Eva_IIT2009_T4 Sortear cupos pre-universitario medicina

    2da Evaluación II Término 2009-2010. Febrero 02, 2010 /ICM00794

    Tema 4 . (30 puntos) Debido a la alta demanda y limitada oferta de cupos para el curso pre-universitario de Medicina de la Universidad de Guayaquil, se realiza el sorteo de cupos entre los aspirantes. Los estudiantes que han sido abanderados o escoltas en sus colegios, ingresan sin sorteo. examenes aula enes

    Se requiere un programa para realizar el registro de los aspirantes que participaran en el sorteo, ingresando su cédula, nombre, condecoración (1:abanderado/escolta, 0: ninguna).

    De los n cupos disponibles, se les descuenta la cantidad de estudiantes que tienen condecoración, y se sortean los m cupos restantes entre los estudiantes.

    Muestre la lista de todos estudiantes seleccionados.

    Cédula Nombre Condecoración
    0912345678 Juan Pedro Moreno 0
    0987654321 Maria Ana Campos 1
    ... ... ...

    NOTA: n se ingresa al inicio y m se cuenta luego del registro de aspirantes
    El sorteo de cupos para el ‘pre’ generó alegría y decepción”. www.eluniverso.com. Enero 21 del 2010.

    Rubrica: Definición de estructura e ingreso de datos (10 puntos), conteo y diferenciación por condecoración (5 puntos). Sorteo de cupos restantes (15 puntos).

  • 2Eva_IIT2009_T3 Controlar saldos prepago

    2da Evaluación II Término 2009-2010. Febrero 02, 2010 /ICM00794

    Tema 3 (30 puntos). Un operador de telefonía móvil registra sus datos de los clientes en una tabla, y requiere realizar un programa para gestionar los registros con algunas opciones mediante un menú con las opciones mostradas:

    1. Ingresar equipo celular.- registra el numero de celular, saldo y mensajes inicial.
    2. Recargar saldo.- Solicita el número de celular y el valor de recarga para acumular al saldo.
    3. Transferir saldo.- Solicita el número de celular del emisor, el número de celular de destino y el valor a transferir, luego debita el valor del saldo del emisor y lo acredita al saldo de destino.
    4. Salir
    Celular Saldo Mensajes
    0987467813 5 50
    0987445622 4 10
    0987454343 12 0

    Nota. No se puede transferir valores mayores al saldo disponible.

    Rúbrica: Creación del menú (5 puntos). Registro de datos (5 puntos). Recarga de saldo por número de celular (5 puntos). Transferencia (10 puntos). Programa integrado y funcional (5 puntos)


  • s2Eva_IIT2009_T3 Controlar saldos prepago

    Ejercicio: 2Eva_IIT2009_T3 Controlar saldos prepago

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

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2009_T3 Controlar saldos prepago
    # Propuesta: edelros@espol.edu.ec
    # Registrar números de celular con listas
    
    celular  = []
    saldo    = []
    mensajes = []
    
    opcion = 0
    while not(opcion==4):
    
        print('1. Ingresar equipo')
        print('2. Recargar saldo')
        print('3. transferir saldo')
        print('4. Salir')
        opcion = int(input('cual opcion: '))
        
        if (opcion==1):
            print('INGRESAR equipo')
            numero = input('numero celular:')
            celular.append(numero)
            saldo.append(0)
            mensajes.append(0)
            m = len(saldo)-1
            texto = str(celular[m])+' '+str(saldo[m])
            texto = texto +' '+str(mensajes[m])
            print(texto)
    
        elif (opcion==2):
            print('RECARGAR')
            numero   = input('numero celular: ')
            cantidad = input('    cantidad: ')
    
            # Busca el numero de celular
            m = len(saldo)
            encontre = -1
            i = 0
            while (i<m and encontre==-1):
                if (celular[i]==numero):
                    encontre = i
                i = i + 1
                
            # si lo encuentra aumenta el saldo
            if (encontre>=0):
                saldo[encontre] = int(saldo[encontre]) + int(cantidad)
                print(encontre)
                texto = str(celular[encontre])+' '+str(saldo[encontre])
                texto = texto + ' ' + str(mensajes[encontre])
                print(texto)
            else:
                print('numero no registrado')
                
        elif (opcion==3):
            print('TRANSFERIR')
            donante  = input('numero donante : ')
            receptor = input('numero receptor: ')
            cantidad = input('       cantidad: ')
    
            # Busca el numero de celular donante
            m = len(saldo)
            encontreA = -1
            i = 0
            while (i<m and encontreA==-1):
                if (celular[i]==donante):
                    encontreA = i
                i = i + 1
            # Busca el numero de celular receptor
            m = len(saldo)
            encontreB = -1
            i = 0
            while (i<m and encontreB==-1):
                if (celular[i]==receptor):
                    encontreB = i
                i = i + 1
                
            #revisa condiciones para transferir
            condicion = encontreA>=0 and encontreB>=0 
            condicion = condicion and int(saldo[encontreA])>=int(cantidad)
            if condicion:
                saldo[encontreA] = int(saldo[encontreA])-int(cantidad)
                saldo[encontreB] = int(saldo[encontreB])+int(cantidad)
                print('saldo transferido: '+str(cantidad))
            else:
                if (encontreA==-1):
                    print('no existe registro de donante:')
                if (encontreB==-1):
                    print('no existe registro de receptor:')
            
        elif (opcion==4):
            print('Gracias por usar el software')
        else:
            print('opción no disponible..!')
    

    resultado del algoritmo

    1. Ingresar equipo
    2. Recargar saldo
    3. transferir saldo
    4. Salir
    cual opcion: 1
    INGRESAR equipo
    numero celular:987
    987 0 0
    1. Ingresar equipo
    2. Recargar saldo
    3. transferir saldo
    4. Salir
    cual opcion: 1
    INGRESAR equipo
    numero celular:876
    876 0 0
    1. Ingresar equipo
    2. Recargar saldo
    3. transferir saldo
    4. Salir
    cual opcion: 2
    RECARGAR
    numero celular: 987
        cantidad: 5
    0
    987 5 0
    1. Ingresar equipo
    2. Recargar saldo
    3. transferir saldo
    4. Salir
    cual opcion: 2
    RECARGAR
    numero celular: 876
        cantidad: 1
    1
    876 1 0
    1. Ingresar equipo
    2. Recargar saldo
    3. transferir saldo
    4. Salir
    cual opcion: 3
    TRANSFERIR
    numero donante : 987
    numero receptor: 876
           cantidad: 3
    saldo transferido: 3
    1. Ingresar equipo
    2. Recargar saldo
    3. transferir saldo
    4. Salir
    cual opcion: 4
    Gracias por usar el software
    >>> 
    

    ejercicios resueltos Python 2eva_iit2009_t3 pdf

    ejercicios resueltos Matlab 2eva_iit2009_t3 pdf

  • 2Eva_IIT2009_T2 Transponer una matriz

    2da Evaluación II Término 2009-2010. Febrero 02, 2010 /ICM00794

    Tema 2 (15 puntos). Realizar una función transponer(matriz) para obtener la transpuesta de una matriz como se muestra en el ejemplo.

    >>matriz

    1 2 3
    4 5 6
    7 8 9
    >> transponer(matriz)

    1 4 7
    2 5 8
    3 6 9

    NOTA: No use la operación de transpuesta definida en MATLAB con la tilde.
    Rúbrica: Definición de la función (5 puntos), trasponer la matriz (10 puntos)

    matriz = [[1,2,3],
              [4,5,6]]
  • s2Eva_IIT2009_T2 Transponer una matriz

    Ejercicio: 2Eva_IIT2009_T2 Transponer una matriz

    Se recorre toda la matriz intercambiando las posiciones de fila y columna. Lo mas sencillo es crear una nueva matriz de ceros con las dimensiones intercambiadas de la matriz inicial.

    matriz = [[1,2,3],
              [4,5,6]]
    

    Al recorrer las casillas de la matriz inicial en cada posición [f,c], se copian los valores en cada [c,f] de la nueva matriz. El resultado debería presentarse como:

    [[1. 4.]
     [2. 5.]
     [3. 6.]]
    >>>

    Algoritmo en Python

    # 2Eva_IIT2009_T2 Transponer una matriz
    import numpy as np
    
    def transponer(matriz):
        matriz = np.array(matriz)
        tamano = np.shape(matriz)
        n = tamano[0] # filas
        m = tamano[1] # columnas
        matrizT = np.zeros(shape=(m,n),dtype=float)
        for i in range(0,n,1):
            for j in range(0,m,1):
                matrizT[j,i] = matriz[i,j]
        return (matrizT)
    
    # PROGRAMA EJEMPLO
    # INICIO
    matriz = [[1,2,3],
              [4,5,6]]
    
    # PROCEDIMIENTO
    matrizT = transponer(matriz)
    
    # SALIDA
    print(matrizT)
    

    Nota: En Numpy existe la instrucción np.transpose(matriz) que realiza la misma operación. En el ejercicio se evalúa su comprensión e implementación del algoritmo, no se considera que use las funciones de cada tópico de álgebra en Python.

  • 2Eva_IIT2009_T1 Mensaje a SMS

    2da Evaluación II Término 2009-2010. Febrero 02, 2010 /ICM00794

    Tema 1. (25 puntos) Realizar una función txtsms(mensaje) que permita resumir un mensaje para ser utilizado como “SMS” (sistema de mensaje corto) siguiendo las siguientes reglas:

    • Sustituya palabra a la izquierda por el carácter a la derecha de la barra / : “que”/“q” , “de”/ “d” , “lo”/“l” y “se”/ “s”
    • Elimine los espacios después de los signos de puntuación ‘.’ ‘,’
    Ejemplo:
    >>mensaje = 'Nadie que dé lo mejor de sí, se arrepentirá de haberlo hecho'
    >>txtsms(mensaje)
    ans = “Nadie q d l mejor d si, s arrepentirá d haberlo hecho”
    diferencia= 9 letras.

    Realizar un programa que reciba un mensaje y presente, el mensaje sms y la diferencia de longitud entre el mensaje escrito y el sms.

    Nota: luego de copiar la primera letra, sí encuentra una palabra nueva que requiera simplificar, salte las letras que no son necesarias.

    Rúbrica: Definición de la función (5 puntos), sustitución de palabras (10 puntos), eliminación de espacios (5 puntos) y programa que integra el uso de la función (5 puntos)

  • s2Eva_IIT2009_T1 Mensaje a SMS

    Ejercicio: 2Eva_IIT2009_T1 Mensaje a SMS

    Propuesta de solución en Python:

    Ejemplo, solo para 'de'-'d':
    >>> mensaje='un estudiante de la espol que estudia'
    >>> txtsms(mensaje)
    'un estudiante d la espol que estudia'

    El nuevo mensaje se realiza copiando el mensaje letra por letra y analizando cada una para revisar si aplica la regla de sms.

    Para el ejemplo solo para la letra 'd', se revisa las letras anteriores y posteriores para estimar que se puede saltar la copia de la letra.

    mensajeSMS_01

    considere que para el análisis planteado i tiene que ser mayor que 1, sino se mostrará error al no tener suficientes letras previas

    >>> mensaje='de su mensaje sms'
    >>> txtsms(mensaje)
    'de su mensaje sms'
    

    implemente el caso presentado en el algoritmo presentado a continuación:

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2009_T1 Mensaje a SMS
    # TAREA: completarotras opciones: que,se,lo
    
    def txtsms(mensaje):
        tm=len(mensaje)
        
        # inicializa variable de salida
        sms = ''
        i = 0
        while not(i>=(tm)):
            
            # si encuentra una 'd' se salta un espacio
            if (mensaje[i-1]=='d' and mensaje[i-2]==' '
                and mensaje[i+1]==' '):
                i = i + 1
                
            # copia un caracter
            sms = sms + mensaje[i]
            i = i + 1
            
        return(sms)
    
  • 2Eva_IT2009_T4 Informe de pacientes con AH1N1

    2da Evaluación I Término 2009-2010. Septiembre 01, 2009 /ICM00794

    Tema 4 (35 puntos). Para llevar el control en el país de la gripe AH1N1, se requiere disponer de los registros de pacientes contagiados, potenciales y descartados (codificados como 2, 1, 0 respectivamente).

    prevenir gripe pasos

    El registro se realiza en cada hospital o centro de salud con los siguientes datos y se administra en el menú mostrado.

    Menú
     1. Registrar datos de Paciente
     2. Lista con Total de Pacientes por tipo
     3. Total de pacientes por provincia
     4. Salir

    Realice un programa que permita realizar las acciones planteadas en el menú de acciones.

    Registro de Pacientes
    Nombre Provincia Tipo Hospital
    María Guayas 1 León Becerra
    Juan Manabí 2 General de Manta
    Pedro Manabí 0 General de Manta
    José Pichincha 0 Eugenio Espejo
    Carlos Pichincha 2 Eugenio Espejo

    Rúbrica: Definición de estructura o archivo y uso en el programa (10 puntos), realización de menú (10 puntos), conteo de pacientes por tipo(5), por provincia (10).