Autor: Edison Del Rosario

  • 3Eva_IIIT2007_T1 Fracción única función

    3ra Evaluación III Término 2007-2008. Abril, 2008 /ICM00794

    Tema 1 (30 puntos). Todo número racional positivo se puede expresar como suma de fracciones de numerador unitario y denominadores enteros positivos, todos distintos.

    Ejemplos:
    0.75 = 1/2 +1/4
    0.85 = 1/2 + 1/3 +1/60

    a) Realice una función en matlab fraccionunica(n) que reciba un número racional y muestre los denominadores enteros positivos diferentes.

    b) Para probar la función, realice un programa de prueba que reciba un número racional entre 0 y 1, muestre el listado de los denominadores enteros positivos diferentes.

    Nota: Inicie acumulando las fracciones 1/2, 1/3, 1/4, solo si no sobrepasa el valor de n.

  • 3Eva_IIT2007_T2 Verificar matriz Sudoku

    3ra Evaluación II Término 2007-2008. Febrero 26, 2008 /ICM00794

    Tema 2. (30 puntos) El juego SUDOKU consisten en llenar una matriz de 9x9 con números del 1 al 9 de tal forma que un número en una sola celda sea:

    • Único para la fila en la que se encuentra
    • Único para la columna en la que se encuentra
    • Único para el sub-cuadro de 3x3 en el que se encuentra

    Escriba una función que dada una matriz de 9x9 determine si es o no una matriz resuelta de SUDOKU

    Ejemplo:
    1 3 5 4 6 2 9 8 7
    7 6 2 1 9 8 5 4 3
    8 9 4 5 3 7 6 2 1
    9 7 8 6 1 3 2 5 4
    4 1 6 9 2 5 3 7 8
    2 5 3 7 8 4 1 6 9
    5 2 7 3 4 1 8 9 6
    3 8 9 2 7 6 4 1 5
    6 4 1 8 5 9 7 3 2

    Para el ejercicio en python:
    >>> matriz=np.array([[1, 3, 5, 4, 6, 2, 9, 8, 7],
    [7, 6, 2, 1, 9, 8, 5, 4,3],
    [8, 9, 4, 5, 3, 7, 6, 2, 1],
    [9, 7, 8, 6, 1, 3, 2, 5, 4],
    [4, 1, 6, 9, 2, 5, 3, 7, 8],
    [2, 5, 3, 7, 8, 4, 1, 6, 9],
    [5, 2, 7, 3, 4, 1, 8, 9, 6],
    [3, 8, 9, 2, 7, 6, 4, 1, 5],
    [6, 4, 1, 8, 5, 9, 7, 3, 2]])
  • s3Eva_IIT2007_T2 Verificar matriz Sudoku

    Ejercicio: 3Eva_IIT2007_T2 Verificar matriz Sudoku

    Propuesta de solución en Python:

    En el enunciado puede obtener una matriz para usar en el programa ejemplo.

    Simplifique el problema, por ejemplo inicie con el algoritmo para verificar los números sea únicos en un vector, el resultado lo convierte una función únicos(vector). La función únicos() la usa para cada fila, luego para cada columna y finalmente para cada recuadro de 3x3.

    Al finalizar, convierta la parte del programa ejemplo en una función verificasudoku(matriz).

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IIT2007_T2 Verificar matriz Sudoku
    # Propuesta: edelros@espol.edu.ec
    # Tarea por completar: tercera regla recuadros
    
    import numpy as np
    
    # verificar unicos en vector, intervalo [1,9]
    def unicos(vector):
        m = len(vector)
        contadores = np.zeros(9+1, dtype = int)
    
        i = 0
        while not(i>=m):
            numero = vector[i]
            contadores[numero] = contadores[numero] +1
            i = i+1
    
        # revisa que el contador sea siempre 1
        cumple = 1
        numero = 1
        while not(numero>9 or cumple==0):
            if (contadores[numero] != 1):
                cumple = 0
            numero = numero+1
        return(cumple)
    
    # PROGRAMA -------------------------
    # INGRESO
    matriz=np.array([[1, 3, 5, 4, 6, 2, 9, 8, 7],
                     [7, 6, 2, 1, 9, 8, 5, 4, 3],
                     [8, 9, 4, 5, 3, 7, 6, 2, 1],
                     [9, 7, 8, 6, 1, 3, 2, 5, 4],
                     [4, 1, 6, 9, 2, 5, 3, 7, 8],
                     [2, 5, 3, 7, 8, 4, 1, 6, 9],
                     [5, 2, 7, 3, 4, 1, 8, 9, 6],
                     [3, 8, 9, 2, 7, 6, 4, 1, 5],
                     [6, 4, 1, 8, 5, 9, 7, 3, 2]])
    
    # PROCEDIMIENTO
    essudoku = 1
    
    # verifica por filas
    fila = 0
    while not(fila>=9 or essudoku==0):
    
        # Selecciona vector
        vector = matriz[fila,:]
    
        verifica = unicos(vector)
        if (verifica==0):
            essudoku = 0
        fila = fila+1
    
    # Verifica por columnas
    columna = 0
    while not(columna>=9 or essudoku==0):
    
        # Selecciona vector
        vector = matriz[:,columna]
    
        verifica = unicos(vector)
        if (verifica==0):
            essudoku = 0
        columna = columna+1
    
    # Verifica en cada submatriz de 3x3
    fila = 0
    columna = 0
    submatriz = matriz[fila:fila+3,columna:columna+3]
    # convertir submatriz a vector
    # aplicar funcion unicos, para verificar essudoku
    
    # SALIDA
    print('¿es la matriz sudoku? [0,1]: ')
    print(essudoku)
    
  • 3Eva_IIT2007_T1 Depreciación por suma de dígitos

    3ra Evaluación II Término 2007-2008. Febrero 26, 2008 /ICM00794

    Tema 1. (30 puntos) “Suma de Dígitos” es un método de depreciación de activos fijos, el cual consiste en ir depreciando cada año parte del valor del activo de forma proporcional en función del año.

    El método comienza sumando los números naturales comprendidos entre 1 y n (años de vida útil del activo), luego para cada año de forma proporcional se realiza la depreciación.

    Ejemplo:
    Activo: Vehículo 
    Valor del Activo:10.000
    Tiempo (n): 5 años
    Suma de dígitos: 1+2+3+4+5=15
    Año operaciones Depreciación Valor Actual
    Inicio 10.000,00
    Año 1 10.000*(5/15)= 3.333,33 6.666,67
    Año 2 10.000*(4/15)= 2.666,67 4.000,00
    Año 3 10.000*(3/15)= 2.000,00 2.000,00
    Año 4 10.000*(2/15)= 1.333,33 666,67
    Año 5 10.000*(1/15)= 666,67 0,00

    Observación: Al final del 5 año, el activo se ha depreciado, quedando como resultado el valor residual de cero.

    Escriba un programa donde se solicite al usuario: Nombre del activo, Valor del activo y tiempo en años.

    Luego aplique el método depreciación por “Suma de dígitos” y muestre para cada año el valor a depreciar y el valor actual del activo en ese momento.

  • s3Eva_IIT2007_T1 Depreciación por suma de dígitos

    Ejercicio: 3Eva_IIT2007_T1 Depreciación por suma de dígitos

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IIT2007_T1 Depreciación por suma de dígitos
    import numpy as np
    
    articulo = input('nombre articulo: ')
    anios = int(input('años a depreciar: '))
    valor = float(input('valor inicial: '))
    
    # PROCEDIMIENTO
    suma = 0
    contador = anios
    while not(contador<1):
        suma = suma+contador
        contador = contador-1
    
    # vector depreciacion
    deprecia = np.zeros(anios+1, dtype=float)
    deprecia[0] = 0
    contador = anios
    fila = 1
    while not(contador<1):
        deprecia[fila] = valor*(contador/suma)
        contador = contador-1
        fila = fila+1
    
    actual = np.zeros(anios+1,dtype=float)
    fila = 0
    actual[0] = valor
    fila = 1
    while not(fila>anios):
        actual[fila] = actual[fila-1]-deprecia[fila]
        fila = fila+1
        
    print(deprecia)
    print(' El valor actual por anio es:')
    
    # SALIDA
    fila = 0
    print(' anio:   valor:')
    while not(fila>anios):
        print(str(fila)+' | '+str(actual[fila]))
        fila = fila+1
    

    resultado del algoritmo

    nombre articulo: vehiculo
    años a depreciar: 5
    valor inicial: 10000
    [   0.  3333.33333333 2666.66666667  2000.  1333.33333333
      666.66666667]
     El valor actual por anio es:
     anio:   valor:
    0 | 10000.0
    1 | 6666.666666666667
    2 | 4000.0000000000005
    3 | 2000.0000000000005
    4 | 666.6666666666672
    5 | 5.684341886080801e-13
    >>> 
    
  • 3Eva_IT2007_T4 Registrar y consultar membresía en club

    3ra Evaluación I Término 2007-2008. Septiembre 11, 2007 /ICM00794

    Tema 4. (30 puntos) Escriba un programa que permita ingresar los datos de n socios de un club:

    Código de membresía (número entero positivo)
    Nombre (cadena de 20 caracteres)
    Género (un solo carácter, M: Masculino, F: Femenino)
    Edad en años (número entero positivo)

    En el mismo programa permita ingresar los pagos de las cuotas de n socios del club:

    Código de membresía (número entero positivo)
    Fecha de la cuota (estructura que contiene mes y año)
    Cuota mensual en dólares (número real positivo)
    Estado (un solo carácter, P: Pendiente, C: Cancelada)

    Liste también los códigos de membresía y nombres de los socios del club, cuya edad está entre 20 y 30 años (inclusive), son del género femenino y ya han cancelado la cuota del mes anterior

  • 3Eva_IT2007_T3 Tabla de valores futuros de proyectos

    3ra Evaluación I Término 2007-2008. Septiembre 11, 2007 /ICM00794

    Tema 3. (30 puntos) Escriba la función valor_presente, la cual recibe tres parámetros (Vf valor futuro, n períodos y la tasa de interés i) y retorna el valor presente basado en la siguiente relación matemática:

    V_p = \frac{V_f}{(i+i)^n}

    El flujo de efectivo de un proyecto se puede representar en un arreglo, en donde la primera columna es el presente (año cero) y el resto de columnas son los períodos futuros, en las celdas del arreglo se encuentra el flujo de efectivo para el proyecto en determinado año:

     Año 0 1 2 3 4
    valor -2.000 400 500 300 350

    Si la tasa de interés es 10%, determine el Valor Actual Neto del proyecto (VAN), lo cual consiste en llevar al presente cada valor del flujo a partir del año 1. Si el VAN es positivo entonces el proyecto se lo considera factible.

    Escriba un programa donde se registre la información de flujo de efectivo de un proyecto.

    Considere que los proyectos son planificados para n años.
    Solicite la tasa de interés y haciendo uso de la función valor_ presente determine cuáles proyectos son los factibles.

  • 3Eva_IT2007_T2 Función para crear Acrónimos

    3ra Evaluación I Término 2007-2008. Septiembre 11, 2007 /ICM00794

    Tema 2. (20 puntos) Un acrónimo puede ser una sigla que resulta de la unión de las letras iniciales de una o más palabras presentes en una frase.

    Escriba la función acrónimo, la cual recibe una frase (todos los caracteres en mayúsculas), conteniendo palabras separadas por un espacio en blanco y descartando palabras como “Y”, “DE”, “DEL”, muestre una línea formada por las primeras letras de cada palabra.

    Ejemplos:
    'MINISTERIO DE EDUCACIÓN Y CULTURA' --> 'MEC'
    'MUSEO ANTROPOLÓGICO Y DE ARTE CONTEMPORÁNEO' --> 'MAAC'
  • s3Eva_IT2007_T2 Función para crear Acrónimos

    Ejercicio3Eva_IT2007_T2 Función para crear Acrónimos

    Propuesta de solución en Python:

    Ejemplo:
    >>> 
    frase:MINISTERIO DE EDUCACIÓN Y CULTURA
    MEC

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2007_T2 Crear Acrónimos
    # propuesta: edelros@espol.edu.ec
    # Tarea: completar la idea para toda la frase
    
    # INGRESO
    frase = input('frase:')
    
    # PROCEDIMIENTO
    n = len(frase)
    
    # Convierte frase a MAYUSCULAS
    frase = frase.upper()
    
    # inicializa salida z con la primera letra
    # de la primera palabra
    i = 0
    z = frase[i]
    
    # buscar la primera letra de cada palabra
    # a partir de la segunda posición
    # completar para 'de ' y revisar con 'desarrollo'
    i = 1
    while not(i>=(n-1)):
        if (frase[i]==' ' and  not(frase[i+1]=='D')):
            if not(frase[i+1]=='Y'):
                z = z + frase[i+1]
        i = i + 1
    
    # SALIDA
    print(z)
    
  • 3Eva_IT2007_T1 Máquina tragamonedas

    3ra Evaluación I Término 2007-2008. Septiembre 11, 2007 /ICM00794

    Tema 1. (20 puntos) Simular una máquina tragamonedas consiste en generar tres números del 0 al 9, la misma que paga la siguiente cantidad de monedas de acuerdo a la situación: maquina tragamonedas dibujo

    • 20 monedas por un trío (los tres números iguales)
    • 10 monedas por un par (dos de los tres números iguales)

    Cada jugada tiene un costo de 5 monedas, y la máquina siempre empieza con 15 monedas (para suplir el caso de que en la primera jugada salga un trío).

    Escriba un programa que permita a un jugador ingresar la cantidad de monedas que dispone para el juego, realizar jugadas consecutivas y detenerse por insuficientes monedas ya sean del jugador o de la máquina para un próximo premio por tríos.