Autor: Edison Del Rosario

  • s2Eva_IIT2008_T1 Carrera de caracoles

    Ejercicio: 2Eva_IIT2008_T1 Carrera de caracoles
    Propuesta de solución en Python para dos caracoles A y B:

    Cada caracol inicia en el punto de partida

    A = 0 
    B = 0 
    t = 0

    El movimiento de cada caracol se simula con un número aleatorio.

    mueveA = int(rnd.random()*5)-1
    A = A + mueveA
    

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2008_T1 Carrera de caracoles
    # solo dos caracoles
    
    import random  as rnd
    
    # INGRESO
    meta = int(input('meta maxima: '))
    
    # PROCEDIMIENTO
    A = 0
    B = 0
    t = 0
    while (A<meta and B<meta):
        mueveA = int(rnd.random()*5)-1
        A = A + mueveA
        
        mueveB = int(rnd.random()*5)-1
        B = B + mueveB
        
        t = t + 1
    
    gana = 0
    if (A>B):
        gana = 1
    if (B>A):
        gana = 2
        
    # SALIDA
    print('ganó el caracol: ',gana)
    print('tiempo transcurrido: ', t)
    

    Resultado del algoritmo

    meta maxima: 50
    ganó el caracol:  2
    tiempo transcurrido:  38
    >>> 
    meta maxima: 50
    ganó el caracol:  1
    tiempo transcurrido:  39
    >>> 
    

    Algoritmo en Python

    Carrera para n caracoles use un vector e indices entre 1 y n

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2008_T1 Carrera de caracoles
    import random  as rnd
    import numpy as np
    
    # INGRESO
    meta = int(input('meta maxima: '))
    n = int(input('cuantos jugadores: '))
    
    # PROCEDIMIENTO
    # no se usa la posicion 0, caracoles entre[1,n]
    posicion = np.zeros(n+1, dtype = int)
    
    t    = 0
    gana = 0
    while not(gana>0):
        
        jugador = 0
        while not(jugador>=n):
    
            mueve = int(rnd.random()*5)-1
            posicion[jugador] = posicion[jugador] + mueve
            
            if (posicion[jugador]>meta):
                gana = jugador
    
            jugador = jugador +1
        
        t = t + 1
    
    # SALIDA
    print('posiciones finales:')
    print(posicion)
    print('ganó el caracol: ',gana)
    print('tiempo transcurrido: ', t)
    
    

    resultado de algoritmo

    meta maxima: 50
    cuantos jugadores: 5
    posiciones finales:
    [38 44 44 32 51  0]
    ganó el caracol:  4
    tiempo transcurrido:  39
    >>> 
    meta maxima: 50
    cuantos jugadores: 5
    posiciones finales:
    [46 52 42 33 35  0]
    ganó el caracol:  1
    tiempo transcurrido:  36
    >>> 
    
  • 2Eva_IT2008_T4 Medallas olímpicas por país

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

    Tema 4 (30 puntos). Una vez finalizadas las olimpiadas, se dispone de los resultados las medallas que ha ganado cada país, ordenados alfabéticamente. 

    Realice un programa que:

    • Ingrese en una estructura: el país, cantidad de medallas (10 puntos)
    • ordene y muestre los 5 primeros lugares del total de medallas. (20 puntos)
    Datos de Ejemplo:
    País Medallas
    Afganistan 1
    Alemania 41
    Ecuador 1
    Zimbabue 0

    Referencia: Historia. Jefferson Pérez es el único ecuatoriano que obtuvo distinciones olímpicas: oro en Atlanta 96’ y plata en Pekín 2008.Ecuador compite en Juegos Olímpicos desde 1924. https://www.expreso.ec/deportes/ecuador-compite-en-juegos-olimpicos-desde-1924-NX415816

  • 2Eva_IT2008_T3 Registrar padrón y validar cédulas

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

    Tema 3. (20 puntos). El proceso de registros de votantes en un padrón electoral requiere de las siguientes operaciones:

    1. Registrar: cédula, nombre de un votante (3 puntos)
    2. Mostrar nombres de personas con cédulas válidas (10 puntos)
    3. Mostrar nombres de personas con cédulas no válidas (2 puntos)
    4. Mostrar total de inscritos
    5. Salir

    votacionRealice un programa que permita realizar las operaciones descritas, se permita registrar sin restricción a los votantes para luego para validar las cédulas; utilice la función validaid(cedula) descrita en el tema anterior.

  • 2Eva_IT2008_T2 Validar cédula ecuatoriana

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

    Tema 2. (25 puntos).

    Escriba una función validaid(cédula) que valide si un número de cédula ingresado es válido.
    Para validar una cédula de identidad ecuatoriana el proceso es el siguiente:

    Ejemplo: 0909407173
    El décimo es dígito verificador que se validará es el dígito verificador
    Se trabaja con los primeros 9 dígitos de la cédula 090940717
    Cada dígito de posición impar se lo duplica, si el resultado es mayor que nueve se resta nueve 090980515
    Se suman todos los resultados de posición impar 0+0+8+5+5 = 18
    Se suman todos los dígitos de posición par 9+9+0+1 = 19
    Se suman los dos resultados. 18+19 = 37
    Se resta de la decena inmediata superior; en caso de ser 10, el resultado se vuelve a restar 10 40 – 37 = 3
    Este es el verificador “calculado” 3
    Si el dígito verificador es igual al verificador “calculado”, la cédula es válida, caso contrario es falsa 3 = 3 Cédula válida
  • s2Eva_IT2008_T2 Validar cédula ecuatoriana

    Ejercicio: 2Eva_IT2008_T2 Validar cédula ecuatoriana

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

    Resultado del algoritmo

    >>> vcedula('0909407173')
    1
    >>> vcedula('0909407174')
    0
    >>> 
    

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IT2008_T2 Validar cédula ecuatoriana
    # Propuesta de solución: edelros@espol.edu.ec
    
    def vcedula(texto):
        # sin ceros a la izquierda
        nocero = texto.strip("0")
        
        cedula = int(nocero,0)
        verificador = cedula%10
        numero = cedula//10
        
        # mientras tenga números
        suma = 0
        while (numero > 0):
            
            # posición impar
            posimpar = numero%10
            numero   = numero//10
            posimpar = 2*posimpar
            if (posimpar  > 9):
                posimpar = posimpar-9
            
            # posición par
            pospar = numero%10
            numero = numero//10
            
            suma = suma + posimpar + pospar
        
        decenasup = suma//10 + 1
        calculado = decenasup*10 - suma
        if (calculado  >= 10):
            calculado = calculado - 10
    
        if (calculado == verificador):
            validado = 1
        else:
            validado = 0
            
        return (validado)
    

    ejercicios resueltos Python 2eva_it2008_t2 pdf

    ejercicios resueltos Matlab 2eva_it2008_t2 pdf

  • 2Eva_IT2008_T1 Juego 21 modificado

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

    Tema 1. (25 puntos). Escriba un programa de simulación del juego “21 modificado”, donde el usuario sea el “primer jugador” y otro jugador “Banco” sea simulado por el computador, al final indique el resultado del juego acorde con las siguientes reglas:

    • El Juego de cartas “21 Modificado” participa un “jugador” y el “Banco” que consiste en obtener la suma de las cartas más cercana a 21. Existe un mazo de 44 cartas, numeradas del 1 al 11 para cada tipo o “palo” (trébol, corazón rojo, corazón negro, diamante).
    • El “primer jugador” al pedir una carta, selecciona azar una carta del mazo de 44, quien acumula los puntos de la obtenida sin importar el tipo. El jugador decide si solicita otra carta o se queda con la suma de puntos obtenida. El jugador puede solicitar cartas mientras no pase de 21 puntos acumulados. (10 puntos)
    • Al terminar el primer jugador, continúa el “Banco” que selecciona al azar 3 cartas del mazo. Si la suma de puntos es inferior a 12, se añade al azar otra carta. (5 puntos)
    • El jugador que consigue 21 puntos o la cantidad más cercana a 21 gana el juego; existe la posibilidad de empate o que ambos pierdan al sobrepasar los 21 puntos. (10 puntos)
  • 2Eva_IIT2007_T4 Fibonacci recursiva

    2da Evaluación II Término 2007-2008. Febrero 12, 2008 /ICM00794

    Tema 4. (20 puntos) Escriba una función recursiva que permita calcular la el término i de la secuencia de Fibonacci.

    fibo(i)= \begin{cases} 1,& i=1\\1,& i=2 \\fibo(i-1)+fibo(i-2), & i>2 \end{cases}

    Elabore un programa que usando fibo(i) indique cuántos términos son necesarios para que su acumulado sea mayor que un valor m dado.

  • s2Eva_IIT2007_T4 Fibonacci recursiva

    Ejercicio: 2Eva_IIT2007_T4 Fibonacci recursiva

    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_IIT2007_T4 Fibonacci recursiva
    # Propuesta: edelros@espol.edu.ec
    
    def fibo(i):
        if (i==1) or (i==2):
            z = 1
        if i>2:
            z = fibo(i-1)+fibo(i-2)
        return (z)
    
    # PROGRAMA
    
    # INGRESO
    m = int(input('valor acumulado?:'))
    
    # PROCEDIMIENTO
    s = 0
    i = 1
    while (s<=m):
        s = s + fibo(i)
        i = i + 1
    
    # SALIDA
    print('total de terminos:', i)
    print('total acumulado:', s)
    

    resultado del algoritmo

    valor acumulado?:50
    total de terminos: 9
    total acumulado: 54
    >>> 
    valor acumulado?:60
    total de terminos: 10
    total acumulado: 88
    >>> 
    

    ejercicios resueltos Python 2eva_iit2007_t4 pdf

    ejercicios resueltos Matlab 2eva_iit2007_t4 pdf

  • 2Eva_IIT2007_T3 Registrar y calcular valor SOAT

    2da Evaluación II Término 2007-2008. Febrero 12, 2008 /ICM00794

    Tema 3. (30 puntos) El Seguro Obligatorio de Accidentes de Transito (SOAT) es un requisito para la circulación de cualquier vehículo en el país. soat

    Para conocer el costo del seguro por vehículo debe considerar los siguientes criterios que aportan al costo como se indica:

    • ¿Es de servicio particular o público?
    • ¿Qué clase de vehículo tiene?
    • Debe conocer el año de fabricación del vehículo para determinar su antigüedad.
    Pregunta Clasificación + $ Adicional
    Servicio Particular 20
    Público 50
    Clase Auto 20
    Camioneta 30
    Transporte Pasajeros 40
    Antigüedad 1 a 5 años 5
    6 a 10 10
    más de 10 20

    Elabore un programa que registre en una tabla para n vehículos, los datos de: matricula (Ej: ABC123), servicio, clase y año de fabricación del vehículo.

    Luego calcule y muestre: el costo del SOAT de los vehículos ingresados y el costo total de los vehículos ingresados.

    Referencia: http://www.soatecuador.info/cuantocuesta.html

  • 2Eva_IIT2007_T2 Juego de memotest

    2da Evaluación II Término 2007-2008. Febrero 12, 2008 /ICM00794

    Tema 2. (25 puntos) Memotest es un juego de tablero que consiste en buscar las “parejas”. El tablero cuadrado de tamaño 4×4, donde se encuentran ubicados de forma aleatoria números del 1 al 8 en fichas “volteadas” que no muestran el número. memotest

    • El juego consiste en indicar las ubicaciones de dos fichas en el tablero (fila y columna), que muestran su número y de resultar “parejas” se gana 10 puntos.
    • El jugador tiene máximo 3 posibilidades de equivocación para tratar de descubrir las 8 parejas.

    Escriba un programa en Matlab que permita simular el juego memotest.

    El programa pone parejas de números del 1 al 8 aleatoriamente en una matriz cuagrada de 4×4 equivalente al tablero de juego. Realice esta sección como una función tableroparejas(n) con n=4.

    Se pregunta al jugador dos posiciones de fichas que desea jugar, es decir filas y columnas en el tablero. El  algoritmo verifica si se ha encontrado una pareja de números o si se ha equivocado, revisando que no se puede equivocar más de 3 veces.

    Al final muestra la cantidad de puntos conseguidos.


    >>tableroparejas(4)
    [[3 5 8 1]
     [4 3 2 6]
     [8 7 2 4]
     [6 7 1 5]]
    >>> 
    

    Rúbrica: generar tablero (5 puntos), función estructurada (3 puntos), validar casillas del jugador (2 puntos), equivocaciones (5 puntos), control de aciertos  o puntaje (5 puntos). Algoritmo estructurado (5 puntos)