Categoría: Solución 2da Evaluación

  • s2Eva_IT2013_T1 Función sorteoentre(k,a,b)

    Ejercicio: 2Eva_IT2013_T1 Función sorteoentre(k,a,b)

    Solución propuesta en Python, continúa en Tema 2.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IT2013_T1 Una Tabla de Bingo
    # propuesta: edelros@espol.edu.ec
    
    import random as rnd
    import numpy as np
    
    def sorteoentre(k,a,b):
        suertudos = []
        i = 0
        while not(i>=k):
            sorteo = int(rnd.random()*(b-a+1))+a
            if not(sorteo in suertudos):
                suertudos.append(sorteo)
                i = i+1
        return(suertudos)
    

    resultado del algoritmo

    >>> sorteoentre(5,1,15)
    [11, 14, 7, 10, 6]
    >>> sorteoentre(5,16,30)
    [17, 18, 26, 30, 27]
    >>> 
    
  • s2Eva_IT2006_T3 Encriptar a Morse

    Ejercicio: 2Eva_IT2006_T3 Encriptar a Morse

    Algoritmo en Python

    # 2Eva_IT2006_T3 Encriptar a Morse
    
    def morse_numero(numero):
        equivale = [ '-..-' , '..-.' , '..-' , '.-' , '.-..' ,
                     '-..' , '-.-.' , '…-' , '–.-' , '-.' ]
    
        # separa los digitos
        digitos = []
        while numero>0:
            residuo = numero%10
            cociente = numero//10
            digitos.append(residuo)
            numero = cociente
            
        # equivalente en morse
        m = len(digitos)
        cadena = ""
        j = 0
        while (j<m):
            espacio = ' '
            if j == 0:
                espacio = ''
            cadena = equivale[digitos[j]] + espacio + cadena
            j=j+1
        return (cadena)
    
    def numero_morse(cadena):
        equivale = [ '-..-' , '..-.' , '..-' , '.-' , '.-..' ,
                     '-..' , '-.-.' , '…-' , '–.-' , '-.' ]
        # separa cadena
        partes = cadena.split(' ')
        # construye numero
        numero = 0
        m = len(partes)
        for i in range(0,m,1):
            digito = equivale.index(partes[i])
            numero = numero*10+digito
        
        return(numero)
    
    # Tarea, realizar el menú requerido.
    

    resultado del algoritmo

    >>> morse_numero(12)
    ('..-. ..-',)
    >>> numero_morse('..-. ..-')
    12
    >>> 
    
  • s2Eva_IT2006_T2 Simula juego de ruleta, punto y premio

    Ejercicio: 2Eva_IT2006_T2 Simula juego de ruleta, punto y premio

    resultados del algoritmo

    >>> puntoganado(5)
    8
    >>> 
    >>> puntoganado(5)
    7
    >>> 
    >>> puntoganado(5)
    9
    >>> 
    >>> premio(8)
    'pluma'
    >>> premio(18)
    'camiseta'
    >>> premio(28)
    'camiseta'
    >>> premio(78)
    'ninguno'
    >>> premio(3)
    'ninguno'
    >>> 
    
    

    Algoritmo en Python

    # 2Eva_IT2006_T2 Juego ruleta, punto y premio
    import random as rnd
    
    def puntoganado(escoge):
        ruleta = [2,7,5,9,1,3,8,4]
        m = len(ruleta)
        giro = int(rnd.random()*m)+0
        parada = escoge + giro
        if parada>=m:
            parada = parada-m
        puntos = ruleta[parada]
        return(puntos)
    
    def premio(acumulado):
        producto = 'ninguno'
        if (acumulado>=5 and acumulado<=15):
            producto = 'pluma'
        if (acumulado>=16 and acumulado<=35):
            producto = 'camiseta'
        if (acumulado>=36 and acumulado<=45):
            producto = 'balon del mundial'
        return(producto)
    
    # tarea # programa de prueba
    
  • s2Eva_IT2006_T1 Donaciones defensa civil

    Ejercicio: 2Eva_IT2006_T1 Donaciones defensa civil

    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_IT2006_T1 Donaciones defensa civil
    # Propuesta: edelros@espol.edu.ec
    # Nombre Donante, teléfono, Tipo Donación, Cantidad
    
    donacion = []
    opcion = 0
    while not(opcion==5):
        
        print('1. Registro de donacion')
        print('2. Donantes por tipo')
        print('3. Unidades por tipo')
        print('4. Guardar archivo')
        print('5. Salir')
        
        opcion = int(input('cual opcion: '))
    
        if (opcion==1):
            print('REGISTRA DONACION')
            nombre   = input('nombre: ')
            telefono = input('telefono: ')
            print(' tipo: 1.alimentos 2.medicina 3.dinero')
            tipo     = int(input('tipo : '))
            cantidad = float(input('cantidad: '))
            donacion.append([nombre,telefono,
                             tipo,cantidad])
    
        elif (opcion==2):
            print('DONANTES POR TIPO')
            m = len(donacion)
            qalimento = 0
            qmedicina = 0
            qdinero   = 0
            for i in range(0,m,1):
                if (donacion[i][2]==1):
                    qalimento = qalimento + 1
                if (donacion[i][2]==2):
                    qmedicina = qmedicina + 1
                if (donacion[i][2]==3):
                    qdinero = qdinero + 1
            print('donantes alimento: ' + str(qalimento))
            print('donantes medicina: ' + str(qmedicina))
            print('donantes dinero:   ' + str(qdinero))
                
        elif (opcion==3):
            print('UNIDADES POR TIPO')
            m = len(donacion)
            salimento = 0.0
            smedicina = 0.0
            sdinero   = 0.0
            for i in range(0,m,1):
                if (donacion[i][2]==1):
                    salimento = salimento+donacion[i][3]
                if (donacion[i][2]==2):
                    smedicina = smedicina+donacion[i][3]
                if (donacion[i][2]==3):
                    sdinero = sdinero+donacion[i][3]
            print('cantidad de alimento: '+str(salimento))
            print('cantidad medicina: '+str(smedicina))
            print('cantidad dinero:   '+str(sdinero))
            
        elif (opcion==4):
            print('Guardar')
            nombrearchivo = input('nombre archivo: ')
            archivo = open(nombrearchivo+'.txt','w')
            m = len(donacion)
            for i in range(0,m,1):
                registro = str(donacion[i][0])+','+str(donacion[i][1])
                registro = registro + ',' + str(donacion[i][2])
                registro = registro + ',' + str(donacion[i][3])+'\n'
                archivo.write(registro)
            archivo.close()
            
        elif (opcion==5):
            print('Gracias por usar el software')
        else:
            print('** opcion no existe **')
    

    resultado del algoritmo

    1. Registro de donacion
    2. Donantes por tipo
    3. Unidades por tipo
    4. Guardar archivo
    5. Salir
    cual opcion: 1
    REGISTRA DONACION
    nombre: Juan
    telefono: 123
     tipo: 1.alimentos 2.medicina 3.dinero
    tipo : 1
    cantidad: 30
    1. Registro de donacion
    2. Donantes por tipo
    3. Unidades por tipo
    4. Guardar archivo
    5. Salir
    cual opcion: 2
    DONANTES POR TIPO
    donantes alimento: 1
    donantes medicina: 0
    donantes dinero:   0
    1. Registro de donacion
    2. Donantes por tipo
    3. Unidades por tipo
    4. Guardar archivo
    5. Salir
    cual opcion: 3
    UNIDADES POR TIPO
    cantidad de alimento: 30.0
    cantidad medicina: 0.0
    cantidad dinero:   0.0
    1. Registro de donacion
    2. Donantes por tipo
    3. Unidades por tipo
    4. Guardar archivo
    5. Salir
    cual opcion: 4
    Guardar
    nombre archivo: donante
    1. Registro de donacion
    2. Donantes por tipo
    3. Unidades por tipo
    4. Guardar archivo
    5. Salir
    cual opcion: 5
    Gracias por usar el software
    >>> 
    

    ejercicios resueltos Python 2eva_it2006_t1 pdf

    ejercicios resueltos Matlab 2eva_it2006_t1 pdf

  • s2Eva_IT2005_T4 Registrar mejores calificaciones

    Ejercicio: 2Eva_IT2005_T4 Registrar mejores calificaciones

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

    Se propone realizar el ejercicio mediante el uso de menú, separando las actividades, permitiendo luego añadir opciones.

    Tarea: validar en el ingreso que las notas sean entre 0 y 100, y encontrar los datos de calificación más alta y más baja

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IT2005_T4 Registrar mejores calificaciones
    # propuesta: edelros@espol.edu.ec
    
    # Se usará menú y diccionario para cada registro
    # Tarea: opcion 4 con nota mas alta y mas baja
    # Tarea: aumentar opciones para grabar o leer archivo
    # Tarea: Se puede hacer también con listas y sin menu
    
    lista = []
    suma = 0
    
    opcion = '0'
    while not(opcion=='5'):
        print('1. Ingresar registro')
        print('2. Ingresar ponderaciones')
        print('3. Calcular calificaciones')
        print('4. Mostrar lista y extremos')
        print('5. Salir')
        
        opcion = input('-cual opcion: ')
        
        if (opcion=='1'):
            print('REGISTRO ******')
            nombre   = input('nombre:  ')
            leccion  = int(input('leccion:  '))
            proyecto = int(input('proyecto: '))
            examen   = int(input('examen:   '))
            estudiante = {'nombre':nombre,
                          'leccion':leccion,
                          'proyecto':proyecto,
                          'examen':examen,
                          'calif':0}
            lista.append(estudiante)
            
        elif (opcion=='2'):
            print('PONDERACION')
            pondlecc = int(input('% leccion:  '))
            pondproy = int(input('% proyecto: '))
            pondexam = int(input('% examen:   '))
            suma = pondlecc + pondproy + pondexam
            while not(suma==100):
                print('ponderación no suma 100')
                pondlecc = int(input('% leccion:  '))
                pondproy = int(input('% proyecto: '))
                pondexam = int(input('% examen:   '))
                suma = pondlecc + pondproy + pondexam
            
        elif (opcion=='3'):
            print('CALCULAR')
            tamano = len(lista)
            if (suma==100):
                for i in range(0,tamano,1):
                    suma = lista[i]['leccion']*pondlecc
                    suma = suma + lista[i]['proyecto']*pondproy
                    suma = suma + lista[i]['examen']*pondexam
                    prom = suma/100
                    lista[i]['calif'] = prom
                print('Recalculadas las notas, proceder a mostrar')
            else:
                print('** las ponderaciones no son validas **')
                print('** volver a opcion de ponderaciones **')
            
        elif (opcion=='4'):
            print('LISTA')
            tamano = len(lista)
            print('nombre, leccion, proyecto, examen, calif')
            for i in range(0,tamano,1):
                texto = lista[i]['nombre'] + ', ' + str(lista[i]['leccion'])
                texto = texto + ', '+str(lista[i]['proyecto'])
                texto = texto + ', ' + str(lista[i]['examen'])
                texto = texto +', '+str(lista[i]['calif']) 
                print(texto)
    
        elif (opcion=='5'):
            print('Gracias por usar el software...')
    
        else:
            print('** NO es una opcion disponible **')
    

    resultado de algoritmo

    1. Ingresar registro
    2. Ingresar ponderaciones
    3. Calcular calificaciones
    4. Mostrar lista y extremos
    5. Salir
    -cual opcion: 1
    REGISTRO ******
    nombre:  juan
    leccion:  50
    proyecto: 70
    examen:   80
    1. Ingresar registro
    2. Ingresar ponderaciones
    3. Calcular calificaciones
    4. Mostrar lista y extremos
    5. Salir
    -cual opcion: 1
    REGISTRO ******
    nombre:  Maria
    leccion:  70
    proyecto: 60
    examen:   90
    1. Ingresar registro
    2. Ingresar ponderaciones
    3. Calcular calificaciones
    4. Mostrar lista y extremos
    5. Salir
    -cual opcion: 2
    PONDERACION
    % leccion:  30
    % proyecto: 20
    % examen:   50
    1. Ingresar registro
    2. Ingresar ponderaciones
    3. Calcular calificaciones
    4. Mostrar lista y extremos
    5. Salir
    -cual opcion: 3
    CALCULAR
    Recalculadas las notas, proceder a mostrar
    1. Ingresar registro
    2. Ingresar ponderaciones
    3. Calcular calificaciones
    4. Mostrar lista y extremos
    5. Salir
    -cual opcion: 4
    LISTA
    nombre, leccion, proyecto, examen, calif
    juan, 50, 70, 80, 69.0
    Maria, 70, 60, 90, 78.0
    1. Ingresar registro
    2. Ingresar ponderaciones
    3. Calcular calificaciones
    4. Mostrar lista y extremos
    5. Salir
    -cual opcion: 5
    Gracias por usar el software...
    >>> 
    

    ejercicios resueltos Python final_it2005_t4 pdf

    ejercicios resueltos Matlab final_it2005_t4 pdf

  • 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

  • s2Eva_IIT2004_T3 Reciclar vasos

    Ejercicio: 2daEva_IIT2004_T3 Reciclar vasos

    algoritmo: [ mientras-repita ] [ repita-hasta ]
    diagrama flujo: [ mientras-repita ] [ repita-hasta ]

    Se requiere usar el concepto de cociente y residuo, pues un vaso reciclado entero se obtiene con 4 vasos. Menos de 4 vasos a reciclar no producen un vaso entero, por lo que no se usan en el proceso y quedan separados como sobrantes a ser acumulados en el próximo ciclo.

    algoritmo: [ mientras-repita ] [ repita-hasta ]
    diagrama flujo: [ mientras-repita ] [ repita-hasta ]

    ..


    Algoritmo en Python: Bucle mientras-repita

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2004_T3 Reciclar vasos
    # Solucion propuesta para 1ra Eval. sin Funciones
    
    # INGRESO
    n = int(input('Cuantos vasos usados:'))
    factor = int(input('nuevos/reciclado:'))
    
    # PROCEDIMIENTO
    total=0
    while (n>=factor):
        reciclado = n//factor
        sobra = n%factor
        total = total + reciclado
        n = reciclado + sobra
    
    # SALIDA
    print('total reciclados: ', total)
    

    algoritmo: [ mientras-repita ] [ repita-hasta ]
    diagrama flujo: [ mientras-repita ] [ repita-hasta ]
    ..


    Diagrama de Flujo: Mientras-Repita

    Reciclar vasos 01

    algoritmo: [ mientras-repita ] [ repita-hasta ]
    diagrama flujo: [ mientras-repita ] [ repita-hasta ]
    ..


    Algoritmo en Python: Bucle repita-hasta

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2004_T3 Reciclar vasos
    # Solucion propuesta para 1ra Eval. sin Funciones
    
    # INGRESO
    n = int(input('Cuantos vasos usados:'))
    factor = int(input('nuevos/reciclado:'))
    
    # PROCEDIMIENTO
    total = 0
    while not(n<factor):
        reciclado = n//factor
        sobra = n%factor
        total = total + reciclado
        n = reciclado + sobra
    
    # SALIDA
    print('total reciclados: ', total)
    

    resultado del algoritmo

    Cuantos vasos usados:70
    nuevos/reciclado:4
    total reciclados:  23
    >>>
    Cuantos vasos usados:7000
    nuevos/reciclado:4
    total reciclados:  2333
    >>>
    

    algoritmo: [ mientras-repita ] [ repita-hasta ]
    diagrama flujo: [ mientras-repita ] [ repita-hasta ]
    ..


    Diagrama de Flujo: Repita-Hasta

    algoritmo: [ mientras-repita ] [ repita-hasta ]
    diagrama flujo: [ mientras-repita ] [ repita-hasta ]


    Propuesta de solución con diagrama de flujo, Python y otra versión con Matlab

    ejercicios resueltos Python final_iit2004_t3 pdf

    ejercicios resueltos Matlab final_iit2004_t3 pdf

  • s2Eva_IIT2004_T2 Encuesta miembros de familia

    Ejercicio: 2Eva_IIT2004_T2 Encuesta miembros de familia

    Resultado obtenido:

    vector de frecuencias: 
    [0 1 2 0 0 0 1 0 0 0]
    el valor mas repetido:  3
    la media es:  3.75
    >>> 
    

    Algoritmo en Python

    # 2Eva_IIT2004_T2 Encuesta miembros de familia
    import numpy as np
    
    def frecuencia(X,Y):
        n = len(X)
        m = len(Y)
        F = np.zeros(n,dtype=int)
        for i in range(0,m,1):
            undato = Y[i]
            donde = X.index(undato)
            F[donde] = F[donde]+1
        return(F)
    
    def masfrecuente(X,F):
        dondeMax = np.argmax(F)
        masrepetido = X[dondeMax]
        return(masrepetido)
    
    def media_aritmetica(X,F):
        n = len(X)
        m = np.sum(F)
        suma = 0
        for i in range(0,n,1):
            suma = suma +X[i]*F[i]
        media = suma/m
        return(media)
    
    # INGRESO
    X = [1,2,3,4,5,6,7,8,9,10]
    Y = [2,3,3,7]
    
    # PROCEDIMIENTO
    freq = frecuencia(X,Y)
    masrepetido = masfrecuente(X,freq)
    media = media_aritmetica(X,freq)
    
    # SALIDA
    print('vector de frecuencias: ')
    print(freq)
    print('el valor mas repetido: ',masrepetido)
    print('la media es: ', media)