Autor: Edison Del Rosario

  • 2Eva_IT2011_T1 Buscar valor en lista

    2da Evaluación I Término 2011, Agosto 30, 2011 /ICM00794

    Tema 1 (15 puntos). Realice una función enlista(número,vector) que reciba un número entero y un vector que contiene una lista de números, revise si el número se encuentra en el vector.
    Las respuestas serán: si esta en lista (1), si no está en lista (0).

    i vector(i)
    1 456
    2 654
    3 234
    4 987
    5 876
    Ejemplo:
    >> enlista(789,vector)
     ans= 0
    >> enlista(234,vector)
     ans=1

    Rúbrica: Definición de función (5 puntos), revisión (5 puntos), respuestas (5 puntos)

     

  • 2Eva_IIT2010_T4 Elegir representante con 50% votación

    2da Evaluación II Término 2010, Febrero 01, 2011 /ICM00794

    Tema 4 (30 puntos). Un grupo de n personas debe elegir a su representante.

    Será elegido si tiene al menos la mitad de los votos, caso contrario se deberá repetir la votación desde el inicio.

    Cada persona es identificada con un número entero entre 1 y n y cualquiera de las personas puede ser elegida.

    Escriba un programa para el proceso electoral con el siguiente menú:

    1. Inicializar votación: Poner contadores y registros de n votos en cero para nueva votación.
    2. Ingresar los votos: se ingresa el número identificador del votante y luego el identificador de su candidato. Validar que el votante realice un solo voto.
    3. Determinar ganador: si lo hubo, mostrar cuál fue y si la votación cumple con mayoría requerida.
    4. Mostrar estado de votación: Muestra cantidad de votos realizados y la cantidad que aún no votan.
    5. Salir

    Sugerencia: Use un vector de n componentes para almacenar el conteo de votos de cada una de las n personas. Utilice otro vector para registrar quienes ya han votado.

    Rúbrica: Menú (5 puntos). Ingreso y validación (10 puntos). Ganador y validar mayoría (10 puntos). Mostrar estado (5 puntos).

     

  • 2Eva_IIT2010_T3 Validar registro de revocatoria en CNE

    2da Evaluación II Término 2010, Febrero 01, 2011 /ICM00794

    Tema 3 (25 puntos). El Consejo Nacional Electoral (CNE) para iniciar un proceso de revocatoria de mandato de alcaldes, requiere en la solicitud la presentación de al menos el 10% de firmas del registro electoral.

    Para realizar la revisión de los datos presentados para este proceso se dispone de:

    • Las cédulas del padrón en un arreglo de tamaño n
    • Las cédulas de solicitantes de la revocatoria en un arreglo lista de tamaño m

    a) Realice una función registrados(padrón, lista) que indique cuántas de las cédulas de la lista están registradas en el padrón. Suponga que no hay datos repetidos.

    i Padrón(i) j lista(j)
    1 0912345678 1 0987654321
    2 0987654321 2 0567896543
    3 0754321234 ... ...
    4 0765432456 m
    5 0567896543
    ... ...
    n

    b) Realice un programa que solicite el ingreso de los arreglos padrón y lista, usando las funciones únicos() del tema anterior y registrados() , valide los datos de la lista para informar si los datos cumplen con al menos el 10% del padrón.

    Referencia: “11 procesos de revocatoria se decidirán en febrero”. Enero 12, 2011. - “El presidente del CNE sugiere una reforma para normar la revocatoria”. Diciembre 16, 2011. http://www.eluniverso.com

    Rúbrica: Definición y uso de las funciones (10 puntos). Algoritmo “registrados” (10 puntos). Programa integral (5 puntos)

     

  • s2Eva_IIT2010_T3 Validar registro de revocatoria en CNE

    Ejercicio: 2Eva_IIT2010_T3 Validar registro de revocatoria en CNE

    propuesta de solución en Python, contiene tarea.

    Ejemplo:

    cuantos ciudadanos en padrón: 5
    cédula : 3
    cédula : 2
    cédula : 1
    cédula : 4
    cédula : 5
    cuantos se quejan: 3
    cedula: 2
    cedula: 2
    cedula: 3
    los que si votan son: 2
    [2 3]
    >>> 
    

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2010_T3 Validar registro de revocatoria en CNE
    # Tema 2. Mostrar valores únicos en vector
    # Tema 3. Validar registro de revocatoria en CNE
    
    import numpy as np
    
    def unicos(vector):
        n = len(vector)
        vale = np.ones(n, dtype= int)
        i = 0
        while not(i>=(n-1)): #penultimo
            j = i + 1
            while not(j>=n): # ultimo
                if (vector[i] == vector[j]):
                    vale[j] = 0
                j = j + 1
            i = i + 1
    
        # obtiene los únicos
        sinrepetir =[]
        i = 0
        while not(i>=n):
            if (vale[i] == 1):
                sinrepetir.append(vector[i])
            i= i+1
        sinrepetir = np.array(sinrepetir)
        return(sinrepetir)
    
    def registrados(padron,unicos):
        n = len(padron)
        m = len(unicos)
    
        vale = np.ones(m,dtype=int)
        sivotan = []
        i = 0
        while not(i>=m):
            if not(unicos[i] in padron):
                vale[i] = 0
            if (unicos[i] in padron):
                sivotan.append(unicos[i])
            i = i+1
        sivotan = np.array(sivotan)
        return(sivotan)
    
    # PROGRAMA QUE USA LAS FUNCIONES
    
    # INGRESO
    n = int(input('cuantos ciudadanos en padrón: '))
    padron = []
    i = 0
    while not(i>=n):
        cedula = int(input('cédula : '))
        padron.append(cedula)
        i = i + 1
    
    m = int(input('cuantos se quejan: '))
    sequejan =[]
    j = 0
    while not(j>=m):
        cedula = int(input('cedula: '))
        sequejan.append(cedula)
        j = j + 1
    
    # PROCEDIMIENTO
    sinrepetir = unicos(sequejan)
    sivotan = registrados(padron,sinrepetir)
    k = len(sivotan)
    
    # Tarea: Verificar si llegan al 10% del padrón
    
    # SALIDA
    print('los que si votan son:',k)
    print(sivotan)
    
  • 2Eva_IIT2010_T2 Mostrar valores únicos en vector

    2da Evaluación II Término 2010, Febrero 01, 2011 /ICM00794

    Tema 2 (20 puntos) Realice la función únicos(vector) que recibe un vector de n enteros y entrega otro vector conformado por los elementos no repetidos.

    Considerar que el tamaño del vector resultante puede ser menor al tamaño del vector ingresado.

    i vector(i) j resultado(j)
    1 12345 1 12345
    2 64279 2 64279
    3 12345 3 74351
    4 74351 4 67531
    5 12345 m 5 76524
    6 67531
    n 7 76524

    Rúbrica: Definición de la función (5 puntos). Determinar elementos no repetidos (5 puntos). Vector sin elementos repetidos (10 puntos).


    vector = [12345, 64279, 12345, 74351, 12345, 67531, 76524]
    unicos = [12345, 64279, 74351, 67531, 76524]
  • s2Eva_IIT2010_T2 Mostrar valores únicos en vector

    Ejercicio: 2Eva_IIT2010_T2 Mostrar valores únicos en vector

    Resultado de algoritmo

    [12345, 64279, 74351, 67531, 76524]
    >>>
    

    Algoritmo en Python

    # 2Eva_IIT2010_T2 Mostrar valores únicos en vector
    # usando solo listas y comparando con los demás
    
    # INGRESO
    vector = [12345, 64279, 12345, 74351, 12345, 67531, 76524]
    
    # PROCEDIMIENTO
    n = len(vector)
    
    sinrepetir = []
    for i in range(0,n,1):
        if not(vector[i] in sinrepetir):
                sinrepetir.append(vector[i])
                
    # SALIDA
    print(sinrepetir)
    
  • 2Eva_IIT2010_T1 Juego con fichas rojas y azules

    2da Evaluación II Término 2010, Febrero 01, 2011 /ICM00794

    Tema 1 (25 puntos) El “Juego Lucky” utiliza cuatro fichas rojas (‘R’), una ficha azul (‘A’) y un dado.

    • LuckySe cubren cada ficha con un vaso y aleatoriamente se alinean los vasos.
    • Al reemplazar la ficha azul por el valor del dado y las rojas por 0 se formará un número equivalente.
    • El jugador puede realizar dos cambios de posición entre los vasos sin levantarlos.
    • Al cambiar las posiciones se informa al jugador si el número equivalente: aumentó, es igual o disminuyó.
    • Al final, se descubren las fichas mostrando los puntos logrados, formado por el número equivalente.

    a) Realice una función puntos(cadena,valor) que reciba una cadena de caracteres entre ‘R’ y ‘A’, reemplace la letra ‘R’ por 0 y la letra ‘A’ por valor, entregue el equivalente numérico de puntos obtenidos.

    b) Escriba un programa que simule el juego preguntando cuántas rondas se jugarán, al final mostrará los puntos acumulados por el jugador.

    Ejemplo:
    >> puntos('RRRAR',5)
     ans = 50
    >> puntos('RARRR',5)
     ans = 5000

    Nota: Utilice una cadena de caracteres para simular las fichas y sus posiciones.

    Rúbrica: Definición y uso de función (10 puntos). Cambio de posiciones (5 puntos). Mostrar cambios de valor (5 puntos). Programa integral (5 puntos)

  • s2Eva_IIT2010_T1 Juego con fichas rojas y azules

    Ejercicio: 2Eva_IIT2010_T1 Juego con fichas rojas y azules

    literal a

    usar la posición relativa para determinar el valor de potencia de 10 para acumular el total al recorrer la cadena.

    intercambiar a: 1
     con b: 3
    cadena inicial:  RRRAR
    puntos vasos sin mover:  30
    cadena nueva:  RRRAR
    puntos vasos movidos:  30
    >>> 
     RESTART: D:/CCPG1001Ejemplos/fichasrojasazules.py 
    intercambiar a: 2
     con b: 4
    cadena inicial:  RRRAR
    puntos vasos sin mover:  30
    cadena nueva:  RARRR
    puntos vasos movidos:  3000
    >>> 
    

    literal b

    desarrollado hasta intercambiar caracteres entre las posiciones a,b

    Tarea: realizar varias "rondas"


    Algoritmo en Python

    # 2Eva_IIT2010_T1 Juego con fichas rojas y azules
    import random as rnd
    
    # literal a
    def puntos(cadena,valor):
        n = len(cadena)
        total = 0
        for i in range(0,n,1):
            base = 10**(n-1-i)
            if cadena[i]=='A':
                total = total + valor*base
            if cadena[i]=='R':
                total = total + 0*base
        return(total)
    
    # literal b
    def intercambia(cadena,a,b):
        n = len(cadena)
        orden = []
        for i in range(0,n,1):
            orden.append(i)
        orden[a-1] = b-1
        orden[b-1] = a-1
        nueva = ''
        for i in range(0,n,1):
            posicion = orden[i]
            nueva = nueva + cadena[posicion]
        return(nueva)
    
    # INGRESO
    a = int(input('intercambiar a: '))
    b = int(input(' con b: '))
    
    n = 5 # cantidad de vasos
    
    # PROCEDIMIENTO
    dado = int(rnd.random()*6)+1
    cadena = ''
    for i in range(0,n,1):
        if i == dado:
            cadena = cadena + 'A'
        else:
            cadena = cadena + 'R'
    
    equivale = puntos(cadena,dado)
    
    nueva = intercambia(cadena,a,b)
    equivale2 = puntos(nueva,dado)
    
    # SALIDA
    print('cadena inicial: ',cadena)
    print('puntos vasos sin mover: ',equivale)
    print('cadena nueva: ',nueva)
    print('puntos vasos movidos: ',equivale2)
    
  • 2Eva_IT2010_T3 Registrar donantes ONTOT

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

    Tema 3 (40 puntos). El Ministerio de Salud junto al “Organismo Nacional de Trasplante de Órganos y Tejidos (ONTOT)” requiere implementar programa para gestionar los donantes de órganos y tejidos, que registre, consulte y muestre resultados de donantes inscritos mediante el menú mostrado.

    La consulta por estado permite listar los nombres de los donantes por estado, y el Total de donantes presenta el número de donantes aceptados por tipo de sangre.

    MENU
     1. Ingreso de donantes
     2. Ingresar estado con prueba medica
     3. Consulta por estado de donantes
     4. Total de donantes/tipo de sangre
     5. Salir
    La información registrada
    por donante es:
    Nombre, cédula, año de nacimiento, Tipo de sangre y Estado.
    El tipo de sangre
    se clasifica como:
    (1) O-, (2) O+, (3) A-, (4)A+, (5)B-, (6)B+, (7)AB-, (8)AB+
    El estado del donante
    se modifica luego de
    realizar las pruebas médicas, siendo:
    (1) Inscrito, sin pruebas médicas y predeterminado al ingresar un donante.
    (2) Aceptado
    (3) Rechazado

    Referencia: “1.400 personas inscritas para donar sus órganos”. 20 de Agosto 2010. www.eluniverso.com

    Rúbrica: Menú (5 puntos). Ingreso de datos (5 puntos), Cambio de estado (5 puntos), consulta por estado (10 puntos), cantidad por tipo de sangre (15 puntos)

  • s2Eva_IT2010_T3 Registrar donantes ONTOT

    Ejercicio: 2Eva_IT2010_T3 Registrar donantes ONTOT

    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_IT2010_T3 Registrar donantes ONTOT
    # propuesta solucion: edelros@espol.edu.ec
    
    import numpy as np
    donante = []
    
    opcion = 0
    while not(opcion==5):
        print('1. Ingreso de donantes ')
        print('2. Ingresar estado con prueba medica')
        print('3. Consulta por estado de donantes ')
        print('4. Total de donantes/tipo de sangre')
        print('5. Salir')
    
        opcion = int(input('cual opcion:'))
    
        if (opcion==1):      
            print('1. Ingreso de donantes ')
            texto  = input('nombre: ')
            numero = input('cedula: ')
            numb   = int(input('anio nacimiento:'))
            print('(1)O-, (2) O+, (3) A-, (4)A+, (5)B-, (6)B+, (7)AB-, (8)AB+')
            sangre = int(input('tipo sanguineo:'))
    
            estado = 1
            # crea el registro para un donante
            registro = {'nombre':texto,'cedula':numero,
                        'nacim':numb, 'tipos':sangre,
                        'estado':1}
            
            # añade el registro a la tabla donante
            donante.append(registro)
    
            
        if (opcion==2):
            print('2. Ingresar estado con prueba medica')
            quien  = int(input('cual numero de donante:'))
            cuanto = int(input(' (2) Aceptado , (3) Rechazado :'))
            donante[quien]['estado'] = cuanto
            
        if (opcion==3):
            print('3. Consulta por estado de donantes ')
            cual = int(input('cual estado: '))
            fila = 0
            
            # tamaño de la tabla donante
            n = len(donante)
            while not(fila>=n):
                if (cual==donante[fila]['estado']):
                    print(donante[fila]['nombre'])
                fila = fila + 1
            
        if (opcion==4):
            print('4. Total de donantes/tipo de sangre')
    
            # No se usará la fila 0 de veces
            veces = np.zeros(8+1,dtype=int)
            fila = 0
            while (fila<n):
                k = donante[fila]['tipos']
                veces[k] = veces[k] + 1
                fila = fila + 1
            
            print(veces)
            
        if (opcion==5):
            print(' gracias por usar el software')
            
        if (opcion<1 or opcion>5):
            print('NO ES OPCION DISPONIBLE')
    

    ejercicios resueltos Python 2eva_it2010_t3 pdf

    ejercicios resueltos Matlab 2eva_it2010_t3 pdf