Autor: Edison Del Rosario

  • s2Eva_IT2005_T3 Adivina palabra (ahorcado)

    Ejercicio: 2Eva_IT2005_T3 Adivina palabra (ahorcado)

    Algoritmo en Python

    # 2Eva_IT2005_T3 Adivina palabra (ahorcado)
    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # propuesta: edelros@espol.edu.ec
    
    def esvocal(letra):
        letra = letra.upper()
        vocal = 'AEIOU'
        tipo = 0
        if letra in vocal:
            tipo = 1
        return(tipo)
    
    # INGRESO
    palabra = input('¿Cuál palabra?: ')
    m = len(palabra)
    while m>9:
        print(' palabra de hasta 9 letras')
        palabra = input('¿Cuál palabra?: ')
        m = len(palabra)
    
    # PROCEDIMIENTO
    m = len(palabra)
    palabra = palabra.upper()
    cadena  = ''
    vocal ='AEIOU'
    falla = 0
    
    i = 0
    while i<m:
        cadena = cadena + str(i+1)
        i = i + 1
    
    # una letra
    j = 0
    while (j<m) and falla<5:
        letra = palabra[j]
        cual  = esvocal(letra)
        if cual==1:
            pista = ' es vocal'
        else:
            pista = ' es consonante'
        print(cadena)
        print(str(j+1)+pista + ', fallas:'+str(falla))
    
        unaletra = input('¿cuál letra?: ')
        unaletra = unaletra.upper()
    
        if unaletra == letra:
            print(' adivinado..!')
            j = j + 1
            nueva = palabra[0:j]+cadena[j:]
            cadena = nueva
        else:
            print(' fallaste, no es la letra..!')
            falla = falla + 1
    
    if falla>=5:
        print(' Fallaste 5 veces, perdiste..!')
    else:
        print(' Felicitaciones, ganaste...!!')
    

    Tarea: validar que el ingreso del usuario sea de una sola letra.

    resultado del algoritmo

    ¿Cuál palabra?: conocimiento
     palabra de hasta 9 letras
    ¿Cuál palabra?: sabiduria
    123456789
    1 es consonante, fallas:0
    ¿cuál letra?: s
     adivinado..!
    S23456789
    2 es vocal, fallas:0
    ¿cuál letra?: i
     fallaste, no es la letra..!
    S23456789
    2 es vocal, fallas:1
    ¿cuál letra?: o
     fallaste, no es la letra..!
    S23456789
    2 es vocal, fallas:2
    ¿cuál letra?: a
     adivinado..!
    SA3456789
    3 es consonante, fallas:2
    ¿cuál letra?: x
     fallaste, no es la letra..!
    SA3456789
    3 es consonante, fallas:3
    ¿cuál letra?: y
     fallaste, no es la letra..!
    SA3456789
    3 es consonante, fallas:4
    ¿cuál letra?: z
     fallaste, no es la letra..!
     Fallaste 5 veces, perdiste..!
    >>>
    
  • s2Eva_IT2005_T2 Calcular potencia recursiva

    Ejercicio: 2Eva_IT2005_T2 Calcular potencia recursiva

    literal a

    Al ejecutar el algoritmo se obtiene:

    >>> potenciaR(2,7)
    128
    >>> potenciaR(2,0)
    1
    >>> potenciaR(2,8)
    256
    >>>

    literal b

    p(2) =  17

    Algoritmo en Python

    # 2Eva_IT2005_T2 Calcular potencia recursiva
    
    def potenciaR(base,exponente):
        if exponente == 0:
            z = 1
        if exponente == 1:
            z= base
        if exponente>1:
            z = base*potenciaR(base,exponente-1)
        return(z)
    
    # literal b
    # INGRESO
    a = [1,2,3]
    x = 2
    
    # PROCEDIMIENTO
    n = len(a)
    total = 0
    for i in range(0,n,1):
        termino = a[i]*potenciaR(x,i)
        total = total + termino
    
    # SALIDA
    print('p('+str(x)+') = ',total)
    
  • s2Eva_IT2005_T1 Completar cadena con padright

    Ejercicio: 2Eva_IT2005_T1 Completar cadena con padright

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

    La solución se simplifica al iniciar el resultado con el “mensaje” dado y a partir del siguiente espacio copiar el carácter tantas veces sea necesario hasta completar el n'esimo espacio.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IT2005_T1 Completar cadena con padright
    # Propuesta: edelros@espol.edu.ec
    
    def padright(mensaje,caracter,n):
        t = len(mensaje)
        z = mensaje
        siguiente = t + 1
        for i in range(siguiente,n,1):
            z = z + caracter
        return (z)
    

    prueba de la función, luego de ejecutar algoritmo

    >>> padright('Hola mundo','-',20)
    'Hola mundo---------'
    >>> 
    

    ejercicios resueltos Python final_it2005_t1 pdf

    ejercicios resueltos Matlab final_it2005_t1 pdf

  • 1Eva_IIT2009_T4 Juego "Quien quiere ser millonario"

    1ra Evaluación II Término 2009 - 2010. Diciembre 01, 2009 /ICM00794

    Tema 4 (30 puntos). El juego “Quien quiere ser Millonario” pone a prueba el conocimiento de una persona por medio de n preguntas consecutivas con 4 opciones de respuesta.  quien millonario

    El jugador con cada respuesta Correcta se le permite participar en la siguiente pregunta y aumentar el premio en dólares hasta completar todas las preguntas.

    El juego finaliza cuando el jugador no desea participar en la siguiente pregunta manteniendo el premio logrado o da una respuesta incorrecta perdiendo todo.

    Escriba un algoritmo para jugar “Quien quiere ser Millonario” para n preguntas que:

    a) Solicite en un vector Premio(p) los premios en dólares, y en un vector Correcta(p) establezca aleatoriamente la respuesta correcta a cada pregunta p.(10 puntos)

    p Premio[p] Correcta[p]
    1 200 2
    2 500 3
    3 800 1
    4 1000 1
    5 1500 4
    6 2000 3
    7 3000 4
    8 5000 4
    9 15000 3
    10 20000 1

    b) Controle la participación del concursante: consultando si continúa a la siguiente pregunta o renuncia, si continúa se le pregunta una respuesta; se verifica si es la correcta para pasar siguiente pregunta pero si es incorrecta termina el juego. (15 puntos)

    c) Presente la cantidad de dólares logrados en su participación. (5 puntos)

  • 1Eva_IT2009_T4 Sortear tickets para homenaje Michael Jackson

    1ra Evaluación I Término 2009 - 2010. Julio 07, 2009 /ICM00794

    Tema 4 (30 puntos). Para el Homenaje a Michael Jackson, más de 1,6 millones de seguidores se registraron en Internet para participar en el sorteo de entradas para asistir a la ceremonia en estadio “Staples Center”, y solo 8.750 participantes serian seleccionados para asistir. (www.eluniverso.com 07.07.2009). boleto concierto

    Realice un algoritmo para sortear m boletos entre los n participantes registrados y presentar el listado de los números seleccionados.

    Nota: Se supone que las personas se registran una sola vez, Suponga que n es mayor que m.

    Rubrica: Selección de m personas (10 puntos), selección de n personas no repetidas en el grupo anterior (10 puntos), muestra listado de seleccionados (10 puntos).

  • s1Eva_IT2005_T4 Lanza penales

    Ejercicio: 1Eva_IT2005_T4 Lanza penales

    [ algoritmo ] [ diagrama flujo ]

    Propuesta de solución en Python

    Se realiza el control de goles conseguidos en cada lanzamiento de balón, contando los lanzamientos hasta que se alcancen 5 .

    conseguido = 0
    lanza = 0
    while not(lanza==5):

    El área dónde patea el balón el jugador se ingresa por teclado y la posición del arquero se obtiene de un aleatorio.

        # Patea
        print('Penal número: ', lanza)
        patea = int(input('donde patea: '))
        while not(patea>=1 and patea<=6):
            patea = int(input('OE!..donde patea: '))
    
        # Arquero
        arquero = int(rnd.random() * 6) +1

    Se analiza si hubo gol siempre que donde se patea sea diferente donde está el arquero, con lo que se contabiliza los goles conseguidos.

        # Gol/tapa
        if not(patea==arquero):
            gol = 1
        else:
            gol = 0
    
        conseguido = conseguido + gol
        lanza = lanza + 1

    [ algoritmo ] [ diagrama flujo ]
    ..


    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IT2005_T4 Lanza penales
    
    import random as rnd
    
    conseguido = 0
    lanza = 0
    while not(lanza==5):
    
        # Patea
        print('Penal número: ', lanza)
        patea = int(input('donde patea: '))
        while not(patea>=1 and patea<=6):
            patea = int(input('OE!..donde patea: '))
    
        # Arquero
        arquero = int(rnd.random() * 6) +1
    
        # Gol/tapa
        if not(patea==arquero):
            gol = 1
        else:
            gol = 0
    
        conseguido = conseguido + gol
        lanza = lanza + 1
    
        # Resultado
        print('patea, arquero, gol/tapa')
        print(patea, arquero, gol)
    
    print('*** Goles conseguidos: ', conseguido)
    

    Ejemplo de resultado del algoritmo:

    Penal número:  0
    donde patea: 3
    patea, arquero, gol/tapa
    3 3 0
    Penal número:  1
    donde patea: 2
    patea, arquero, gol/tapa
    2 6 1
    Penal número:  2
    donde patea: 1
    patea, arquero, gol/tapa
    1 1 0
    Penal número:  3
    donde patea: 2
    patea, arquero, gol/tapa
    2 4 1
    Penal número:  4
    donde patea: 3
    patea, arquero, gol/tapa
    3 5 1
    *** Goles conseguidos:  3
    >>>

    [ algoritmo ] [ diagrama flujo ]
    ..


    Diagrama de Flujo

    diagrama de flujo ejercicio resuelto

    [ algoritmo ] [ diagrama flujo ]

  • 1Eva_IT2009_T3 Plan de ahorro programado

    1ra Evaluación I Término 2009 - 2010. Julio 07, 2009 /ICM00794

    Tema 3 (25 puntos). Para usar un “Plan Acumulativo Mensual de Ahorro Programado” se han establecido las reglas que se muestran a continuación: alcancia cerdito

    • El depósito de ahorro mensual D es un valor fijo dado al inicio.
    • El valor meta P es dado inicialmente como un dato.
    • Los intereses ganados serán acumulados por mes, multiplicando el valor acumulado por 1% y agregándolo al valor acumulado actual.
    • Cada tres meses pueden hacerse retiros parciales con un valor R hasta 25% del valor total acumulado.
    • El valor total acumulado podrá retirarse sólo cuando se haya alcanzado el valor P

    Realice un algoritmo que lea el valor del depósito mensual D y el valor P meta al cual se desea llegar.

    • Cada mes debe agregarse un valor D al monto acumulado,
    • Cada tres meses debe realizarse aleatoriamente un retiro con un valor aleatorio de hasta 25% del valor acumulado.

    Determine:
    ¿cuántos meses y retiros se realizaron hasta alcanzar la meta P?

    Rubrica: manejo de saldos (5 puntos), control de retiros (5 puntos), conteo de transacciones (5 puntos), solución estructurada (10 puntos).

  • 1Eva_IIT2009_T3 Descomprimir arreglo

    1ra Evaluación II Término 2009 - 2010. Diciembre 01, 2009 /ICM00794

    Tema 3 (20 puntos). Al descomprimir datos (tema anterior) se restaura el arreglo original. comprime datos 02

    El método para descomprimir consiste en repetir el número de veces indicada por cada datoc en el arreglo de salida.

    Realice un algoritmo para "descomprimir" los arreglos datoc y veces de tamaño n y presente el resultado como en el ejemplo.

    Ejemplo:
    j 1 2 3
    datoc(j) 2 5 3
    veces(j) 3 4 3
    Se convierte en:
    i 1 2 3 4 5 6 7 8 9 10
    datos(i) 2 2 2 5 5 5 5 3 3 3

    Nota: El proceso para comprimir se trata en el tema 2.

    Rúbrica: Ingreso de datos comprimidos (5 puntos), repetir datos en el arreglo salida (10 puntos), muestra ordenada de datos (5 puntos)


    Referencia: ¿Cómo demonios Funciona la COMPRESIÓN DE ARCHIVOS?. minuto 5:44 Tutos PC. 7 diciembre 2023

  • s1Eva_IT2005_T3 Arreglo aleatorio binario a decimal

    Ejercicio: 1Eva_IT2005_T3 Arreglo aleatorio binario a decimal

    Propuesta de solución en Python 1Eva_IT2005_T3 binario a Decimal

    Use un vector de n casillas,

    Las casillas pueden iniciar en cero,para luego llenarlas de números aleatorios una por una,

    B = np.zeros(n,dtype=int)
    

    Junto a la operación anterior, podría realizar las operaciones requeridas en el enunciado.

    B[i] = int(rnd.random()*2)+0
    

    De ser necesario repasar: Binario a Decimal – Algoritmo

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IT2005_T3 Arreglo aleatorio binario a decimal
    # Tarea: contar los 1's, literal a)
    
    import numpy as np
    import random as rnd
    
    # INGRESO
    n = int(input('cuantos componentes n: '))
    
    # PROCEDIMIENTO
    B = np.zeros(n,dtype=int)
    decimal = 0
    i = 0
    while (i<n):
        B[i] = int(rnd.random()*2)+0
        # orden de binarios es izquierda a derecha
        posicion = n-1-i  
        decimal  = decimal+B[i]*(2**posicion)
        i = i+1
    
    # SALIDA
    print('Arreglo de binarios B[i]:')
    print(B)
    print('equivale en decimal:',decimal)
    

    Resultados de algoritmo realizados para un byte (8 bits):

    cuantos componentes n: 8
    Arreglo de binarios B[i]:
    [0 0 1 0 1 0 1 0]
    equivale en decimal: 42
    >>> 
    cuantos componentes n: 8
    Arreglo de binarios B[i]:
    [1 1 1 1 1 1 1 1]
    equivale en decimal: 255
    >>> 
    cuantos componentes n: 8
    Arreglo de binarios B[i]:
    [0 0 1 1 1 1 1 0]
    equivale en decimal: 62
    >>> 
    
  • 1Eva_IT2009_T2 Juego de puertas/salas

    1ra Evaluación I Término 2009 - 2010. Julio 07, 2009 /ICM00794

    Tema 2 (25 puntos). Existen tres salas contiguas A, B, C.

    • Para entrar a la sala A hay dos puertas.
    • Para pasar de la sala A a la sala B hay tres puertas y para pasar de la sala B a la sala C hay 4 puertas.
    • Para entrar a cada sala se requiere escoger una puerta, la cual puede estar en tres estados aleatoriamente:
      • (1) pase a la siguiente sala,
      • (2) puerta bloqueada, o
      • (3) retroceda a la sala anterior.
    • En cada intento, debe elegirse aleatoriamente una puerta y realizar la acción respectiva.
    1
    1 2
    1 2 3
    2 3 4
    Inicio Sala A Sala B Sala C

    Escriba un algoritmo que simule la caminata desde el inicio hasta llegar a la sala C y determine la cantidad de intentos que se requirieron.

    Rubrica: Generar estados diferentes de cada puerta por intento (5 puntos), validar el paso a otra sala (5 puntos), controlar éxito o fracaso (5 puntos) presentar resultados de los intentos (10 puntos).