Autor: Edison Del Rosario

  • 1Eva_IT2002_T1 Funciones signo y máximo

    Parcial I Término 2002 - 2003. Julio 11, 2002 /ICM00794

    Tema 1.

    a) (15 puntos) Diseñar un algoritmo que calcule el signo de la función seno(x), donde x es una medida en grados sexagesimales que se ingresa.

    Ejemplo: 
    sen(45) tiene signo '+'
    sen(200) tiene signo '-'

    b) (15 puntos) Diseñar un algoritmo que calcule el máximo de una lista de n valores enteros, donde n debe ser un número menor que 20, ingresado antes que los números de la lista.

  • s2Eva_IIT2002_T3 Encriptar PIN(4 dígitos)

    Ejercicio: 2Eva_IIT2002_T3 Encriptar PIN(4 dígitos)

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

    Es necesario implementar las instrucciones dadas para armar el número

    • A cada dígito súmele siete.
    • Al resultado de esta suma, divídelo para 10 y extraiga el residuo.
    • El valor resultante reemplaza al dígito original
    • Intercambie el primer dígito con el tercero y el segundo con el cuarto.

    Manteniendo el algoritmo simple, con el supuesto que siempre son cuatro dígitos, se extrae cada dígito en las variables a,b,c,d para aplicar las operaciones indicadas.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2002_T3 Encriptar PIN(4 dígitos)
    # Propuesta: edelros@espol.edu.ec
    
    # literal a. funcion 
    def encripta(n):
        a = (n%10)+7
        n = int(n/10)
    
        b = (n%10)+7
        n = int(n/10)
    
        c = (n%10)+7
        
        d = int(n/10)+7
    
        a = a%10
        b = b%10
        c = c%10
        d = d%10
    
        z = b*1000+a*100+d*10+c
        return (z)
    
    # literal b. PROGRAMA
    # INGRESO
    clave = int(input('¿cuál es su clave?: '))
    while (clave>9999):
        print(' la clave es de 4 digitos')
        clave = int(input('¿cuál es su clave?: '))
    
    # PROCEDIMIENTO
    r = encripta(clave)
    
    # SALIDA
    print('clave encriptada es: ', r)
    

    resultado del algoritmo

    ¿cuál es su clave?: 1254
    clave encriptada es:  2189
    >>> 
    

    ejercicios resueltos Python final_iit2002_t3 pdf

    ejercicios resueltos Matlab final_iit2002_t3 pdf

  • s1Eva_IIT2002_T4 cociente de Fibonacci

    Ejercicio: 1Eva_IIT2002_T4 cociente de Fibonacci

    El ejercicio es una extensión del Algoritmo – Secuencia de Fibonacci, añadiendo la operación del cociente.

    Se requiere guardar valores consecutivos del cociente para comparar su diferencia hasta cumplir con la precisión requerida.

    Ejemplo de ejecución de algoritmo

    >>> 
    precision decimal: 0.001
    cociente: 0.6181818181818182
    con diferencia de:  0.0005347593582887278

    Se añade al algoritmo de Fibonacci el cálculo del cociente.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2002_T4 Cociente de Fibonacci
    # propuesta: edelros@espol.edu.ec
    
    # INGRESO
    precision = float(input('precision decimal: '))
    
    # PROCEDIMIENTO
    a = 1 # Primer cociente
    b = 1
    c = a+b
    cociente1 = a/b
    
    a = b # Segundo cociente
    b = c
    c = a+b
    cociente2 = a/b
    
    diferencia = abs(cociente2-cociente1)
    while not(diferencia<=precision):
        cociente1 = cociente2
        a = b
        b = c
        c = a+b
        cociente2 = a/b
        diferencia = abs(cociente2-cociente1)
    
    # SALIDA
    print('cociente:', cociente2)
    print('con diferencia de: ', diferencia)
    
  • s1Eva_IIT2002_T3 Conjetura de Ullman

    Ejercicio: 1Eva_IIT2002_T3 Conjetura de Ullman

    Se pide un número al usuario.
    Para el número seleccionado o "pensado",
    se realizan las operaciones paso a paso indicadas en el enunciado.

    # INGRESO
    n = int(input('piensa un número: '))
    

    Para determinar paridad se obtiene el "residuo" de la división para 2 y así decidir cuál operación realizar.

    r = n%2

    Se sustituye el número por el resultado de la operación y se vuelve a aplicar si el resultado aún no es 1.

        if (r == 0): #Si es par, divídalo entre 2
            n = n//2
        else: # Si es impar... 
            n = n*3 + 1
    

    Para conocer el número de operaciones realizadas se usa un contador.

    La secuencia se puede almacenar en un vector (lista) para mostrar al final (TAREA)

    Se usa un contador de operaciones para la respuesta

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2002_T3 Conjetura de Ullman
    # propuesta: edelros@espol.edu.ec
    # Tarea: convertir a función
    
    # INGRESO
    n = int(input('piensa un número: '))
    
    # PROCEDIMIENTO
    contar = 0
    while not(n==1):
        r = n%2
        
        if (r == 0):
            n = n//2
        else:
            n = n*3 + 1
        print(n)
        contar = contar + 1
    
    # SALIDA
    print('operaciones realizadas: ', contar)
    
    
  • s1Eva_IIT2002_T2 Color de placas de vehículos

    Ejercicio: 1Eva_IIT2002_T2 Color de placas de vehículos

    [ algoritmo ] [diagrama flujo ]

    Para el ejercicio se requiere el uso de vectores para almacenar la placa de cada vehículo, para luego procesar los datos en el bloque de procedimiento. Los datos de placa se simplifican a usar solo la parte numérica, aprovechando para practicar arreglos con Numpy, por lo que primero se requiere conocer cuántos autos se van a registrar como tamaño del arreglo placa. El índice del arreglo será la posición de la placa en el arreglo.

    # INGRESO
    n = int(input('cuántos autos: '))
    
    placa = numpy.zeros(n+1,dtype=int)
    auto = 1
    while not(auto>n):
        print('placa[',auto,']: ')
        placa[auto] = int(input('  : '))
        auto = auto+1
    

    El contador de código de color correspondiente también se almacena como un arreglo y en la misma posición usando el índice auto

    # PROCEDIMIENTO
    # contadores por color
    color = numpy.zeros(5+1,dtype=int)
    

    Para el procedimiento, es necesario conocer el dígito menos significativo de la placa (unidades), extrayendo el residuo de 10 del número de placa.

    digito = placa[auto]%10

    Se usan condicionales para seleccionar el color que le corresponde y contar la placa de cada color asignado, según la tabla proporcionada.

    dígito COLOR ¿Cuántos?
    1, 2 amarillo (código 1) ...
    3, 4 café (código 2) ...
    5, 6 rojo (código 3) ...
    7, 8 azul (código 4) ...
    9, 0 verde (código 5) ...
        if (digito==1 or digito==2):
            color[1] = color[1]+1
        if (digito==3 or digito==4):
            color[2] = color[2]+1
        if (digito==5 or digito==6):
            color[3] = color[3]+1
        if (digito==7 or digito==8):
            color[4] = color[4]+1
        if (digito==9 or digito==0):
            color[5] = color[5]+1
    

    Se continúa con el siguiente auto hasta completar todos los autos registrados en el arreglo.

    [ algoritmo ] [diagrama flujo ]
    ..


    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2002_T2 Color de placas de vehículos
    # propuesta: edelros@espol.edu.ec
    
    import numpy
    
    # INGRESO
    n = int(input('cuántos autos: '))
    
    placa = numpy.zeros(n+1,dtype=int)
    auto = 1
    while not(auto>n):
        print('placa[',auto,']: ')
        placa[auto] = int(input('  : '))
        auto = auto+1
    
    # PROCEDIMIENTO
    # contadores por color
    color = numpy.zeros(5+1,dtype=int)
    
    # analiza cada auto
    auto = 1
    while not(auto>n):
        digito = placa[auto]%10
        if (digito==1 or digito==2):
            color[1] = color[1]+1
        if (digito==3 or digito==4):
            color[2] = color[2]+1
        if (digito==5 or digito==6):
            color[3] = color[3]+1
        if (digito==7 or digito==8):
            color[4] = color[4]+1
        if (digito==9 or digito==0):
            color[5] = color[5]+1
        auto = auto+1
    
    # SALIDA
    print('Autos por cada color:')
    k = 1
    while not(k>5):
        print('Color tipo ',k,'= ',color[k])
        k = k+1

    Podría intentar realizar el ejercicio con listas, para comparar como se aplican los conceptos.

    Tarea: validar que el número de vehículos sea positivo mayor que 0, validar que sean solo tres dígitos en cada placa.

    [ algoritmo ] [diagrama flujo ]
    ..


    Diagrama de Flujo

    Diagrama de Flujo 1 - Ejercicio Color de placas de automoviles

     

    Diagrama de Flujo 2 - Ejercicio Color de placas de automóviles

    [ algoritmo ] [diagrama flujo ]


    ejercicios resueltos Python parc_iit2002_t2 pdf

    ejercicios resueltos Matlab parc_iit2002_t2 pdf

  • s1Eva_IIT2002_T1a Crea tablas de multiplicar con strings del 1 a n

    Ejercicio: 1Eva_IIT2002_T1 Crea tablas de multiplicar con strings del 1 a n

    Para crear la tabla del multiplicar mostrada en la pantalla, se requiere usar una cadena de caracteres para cada operación.

    El ejemplo resuelto para suma muestra el concepto a usar.
    Tarea: realizar para multiplicación

     1. Mostrar una tabla de sumar
     2. Mostrar una tabla de multiplicar
     3. Salir
      --- ¿Cuál opción?: 1
     **** menú opción 1. sumar ****
     tabla del número: 3
     tabla hasta n: 12
    
    3 + 1 = 4
    3 + 2 = 5
    3 + 3 = 6
    3 + 4 = 7
    3 + 5 = 8
    3 + 6 = 9
    3 + 7 = 10
    3 + 8 = 11
    3 + 9 = 12
    3 + 10 = 13
    3 + 11 = 14
    3 + 12 = 15
    
     1. Mostrar una tabla de sumar
     2. Mostrar una tabla de multiplicar
     3. Salir
      --- ¿Cuál opción?:  
    

    Para formar la cadena, se requiere usar el mismo tipo de datos convirtiendo cada variable numérica como numero en texto luego añadiendo (concatenando) con el símbolo suma '  + ' y así sucesivamente:

    cadena = str(numero) + ' + ' +str(i) + ' = '
    

    Al final se completa con el resultado de la operación numérica

     cadena = cadena + str(resultado)
    

    se muestra en pantalla la cadena, cambiando el valor de la variable 'i' como un contador en un bucle/lazo.

    ReferenciaMenú en Python – Condicionales «elif» semejante a «case»

    Algoritmo en Python: condicionales elif

    # 1Eva_IIT2002_T1a Tablas de multiplicar
    # Ejemplo de un menu
    # las opciones se proponen por caracteres
    # menu
    opcion = '0'
    while not(opcion=='3'):
        print(' 1. Mostrar una tabla de sumar')
        print(' 2. Mostrar una tabla de multiplicar')
        print(' 3. Salir')
    
        opcion=input('  --- ¿Cuál opcion?: ')
        
        if (opcion=='1'):
            print(' **** menú opción 1. sumar ****')
            numero = int(input(' tabla del número: '))
            n = int(input(' tabla hasta n: ' ))
    
            # PROCEDIMIENTO
            i = 1
            while i<=n:
                resultado = numero + i
                cadena = str(numero) + ' + ' +str(i) + ' = '
                cadena = cadena + str(resultado)
                print(cadena)
                i = i+1
            
        elif (opcion=='2'):
            print(' **** menú opción 2. multiplicar ****')
            print('desarrolle como tarea')
            
        elif (opcion=='3'):
            print(' **** menú opción 3. Salir ****')
            print(' **** Saliendo del menú  ****')
            print(' **** Ejemplo de un menú ****')
    
        else:
            print('No existe la opción en el menú')
    
    
  • s2Eva_IIT2002_T1 Verificar si es "Número perfecto"

    Ejercicio: 2Eva_IIT2002_T1 Número perfecto

    Un número perfecto es aquel que es igual a la suma de todos sus divisores, con excepción del mismo.

    Ejemplo:
     6 es perfecto porque, 
       sus divisores son: 1, 2, 3 (6 no se considera).
       1+2+3=6

    literal a. verificar mediante una función perfecto(n)

    Se busca entre todos los números enteros i entre 1 y n, revisando el residuo entre n%i. Si el residuo es cero, es divisible y se acumula en suma para verificar el número perfecto. Al final de la búsqueda si n==suma se considera el número como perfecto.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2002_T1 Número perfecto
    # Propuesta de solución: edelros@espol.edu.ec
    
    import numpy as np
    
    # literal a. funcion
    def perfecto(n):
        suma = 0
        i = 1
        while (i<n):
            residuo = n%i
            # Acumula solo si i es divisor
            if residuo == 0:
                suma = suma + i
            i = i + 1
        if n == suma:
            esperfecto = 1
        else:
            esperfecto = 0
        return (esperfecto)
    
    
    # literal b. PROGRAMA ----------
    # Nota, busca numeros perfectos entre [1,m]
    
    # INGRESO
    m = int(input('¿rango m? : '))
    
    # PROCEDIMIENTO
    encontrado = np.zeros(m+1,dtype=int)
    k = 0
    i = 1
    while (i<=m):
        encontrado[i] = perfecto(i)
        i = i+1
    
    # SALIDA
    i = 1
    while (i<=m):
        if encontrado[i]==1:
            print(i)
        i=i+1
    

    literal b. Listar números perfectos entre [1,m], consiste en crear una lista con todos los números que se verifican con la función creada en el literal a.

    resultado del algoritmo
    Nota: cambiando el enunciado, se busca números perfectos en el rango [1,m]

    ¿rango m? : 50
    6
    28
    >>> 
    ¿rango m? : 1000
    6
    28
    496
    >>> 
    ¿rango m? : 10000
    6
    28
    496
    8128
    >>> 
    

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

    ejercicios resueltos Python final_iit2002_t1 pdf

    ejercicios resueltos Matlab final_iit2002_t1 pdf

  • 2Eva_IIT2001_T4 Control de habitaciones en una clínica

    Final II Término 2001 – 2003. Febrero 5, 2002 /ICM00794

    Tema 4. clinica torre ambulancia

    En una clínica existen 100 habitaciones.

    Los pacientes al ingresar a la clínica se les asigna una habitación, mientras que al darles de alta se deja libre la habitación.

    a) Crear dos estructuras de datos en C/C++, para lo cual se conoce los siguiente:

    • Paciente: Cédula (10 caracteres), Nombre (50 caracteres), código de habitaciones (entero).
    • Habitación: Código (entero), Ocupada (1=Sí,  0=No)
    Paciente
    cédula nombre código
    1234 Juan 2
    456 Maria 8
    Habitación
    código 1 2 7 8
    ocupada 0 1 0 1

    b) Escriba un programa en C/C++ que permita ingresar la información de pacientes y habitaciones, con el siguiente menú:

    1. Ingresar habitaciones
    2. Ingresar y asignar pacientes a las habitaciones
    3. Dar de alta a los pacientes de las habitaciones
    4. Salir

    Nota.- Las restricciones son las siguientes:
    No se puede asignar un paciente a una habitación que está ocupada.
    No se puede liberar una habitación que no esté ocupada.

  • 2Eva_IIT2001_T3 Flujo de ahorro para n años

    Final II Término 2001 – 2003. Febrero 5, 2002 /ICM00794

    Tema 3.

    El flujo de efectivo Fk se evalúa recursivamente considerando el flujo neto anterior Fk-1 y las tasas i1, i2 tal como se indican en la fórmula.

    F_k = \begin{cases} (1 + i_1)F_{k-1}+C_k, && F_{k-1} \ge 0, k>0 \\(1 + i_2)F_{k-1}+C_k,&& F_{k-1} \lt 0, k \gt 0 \\ 0 ,&& k=0 \end{cases}

    En la fórmula, C representa un arreglo de los valores del flujo para n años que operan en un determinado negocio (los valores negativos indican desembolsos)

    Ejemplo:
    C0 C1 C2 C3 C4 Cn
    -500 300 600 -200 300 -200 -300 350

    a) Escriba una función recursiva para poder utilizar FK.

    b) Escriba un programa principal que lea i1, i2, y el arreglo Ck, de n elementos y llame a la función anterior para calcular FK.

    c) Posteriormente, en el mismo programa asigne a i1, el valor de 0.1 y pida por teclado dos valores para i2. Evalúe FK para los casos e identifique si hubo un cambio de signo.

    Nota: Considere las variables float C[20], i1, i2 como globales.