Autor: Edison Del Rosario

  • s2Eva_IIT2001_T3 Flujo de ahorro para n años

    Ejercicio: 2Eva_IIT2001_T3 Flujo de ahorro para n años

    Propuesta de solución en Python:

    Se crea una funcion para evaluar el flujo de efectivo del periodo usando los valores anteriores. Con lo que se puede aplicar a cada valor de capital Ck de la tabla ingresada en el bloque de inicio.

    Flujo de efectivo usando arreglos

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2001_T3 Flujo de ahorro para n años
    # TAREA: continuar para otros valores k
    import numpy as np
    
    # literal a. función recursiva
    
    def flujo(k,i1,i2,c):
    
        if (k>0):
            if (flujo(k-1,i1,i2,c)>=0):
                resultado = (1+i1)*flujo(k-1,i1,i2,c)+c[k]
            else:
                resultado = (1+i2)*flujo(k-1,i1,i2,c)+c[k]
    
        if (k==0):
            resultado = 0
        return(resultado)
    
    
    # literal b. PROGRAMA
    
    # INGRESO
    k  = int(input('cual año: '))
    i1 = float(input('tasa i1: '))
    i2 = float(input('tasa i2: '))
    
    c = np.array([-500, 300, 600, -200,
                  300, -200, -300, 350])
    
    # valores de c[k]
    ##n = int(input(' cuantos años: '))
    ##c = np.zeros(n,dtype=float)
    ##for anio in range(0,n,1):
    ##    c[anio] = float(input('c['+str(anio)+']: '))
    
    # PROCEDIMIENTO
    valor = flujo(k,i1,i2,c)
    # TAREA: continuar para otros valores k
    
    #SALIDA
    print('valor: ', valor)
    

    Resultado del algoritmo

    Tomando como punto de partida los saldos "c" del enunciado

    • en el año 1, como el saldo del año anterior fué negativo, no se pagan intereses, por lo que el saldo es el mismo del año, 300 dólares
    • en el año 2, como el saldo del año anterior fué positivo, se reciben intereses del saldo, que corresponden a 18 dólares.
    cual año: 0
    tasa i1: 0.05
    tasa i2: 0.10
    valor:  0
    >>> 
    cual año: 1
    tasa i1: 0.06
    tasa i2: 0.10
    valor:  300.0
    >>> 
    cual año: 2
    tasa i1: 0.06
    tasa i2: 0.10
    valor:  918.0
    >>> 
    cual año: 3
    tasa i1: 0.06
    tasa i2: 0.10
    valor:  773.08
    >>> 
    
  • s2Eva_IIT2001_T2 Contar puntos aleatorios en un triángulo

    Ejercicio: 2Eva_IIT2001_T2 Contar puntos aleatorios en un triángulo

    Se cuentan los puntos que caen el el área marcada en verde que se encuentra debajo de:

    f(x)= -x+10

    siendo el intervalo [a,b] con valores de a = 0 y b=10, la mitad corresponde a  (a+b)/2

    Como las áreas consideradas corresponden a dos sectores, considere usar x entre[a,mitad] y entre [mitad, b], limitados en y por la línea f(x)

    Un resultado gráfico, no requerido para el ejercicio, tan solo para mejor comprensión:

    de n puntos:  100
     dentro estaban:  25
    >>> 
    

    Algoritmo en Python

    # 2Eva_IIT2001_T2 Contar puntos aleatorios 
    # dentro de área triángular
    import random as rnd
    import numpy as np
    import matplotlib.pyplot as plt
    
    # INGRESO
    n = 100
    a = 0
    b = 10
    
    # función a evaluar
    f = lambda x: -x+10
    
    # PROCEDIMIENTO
    mitad = (a+b)/2
    X = []
    Y =[]
    dentro = 0
    i = 0
    while not(i>=n):
        xi = rnd.random()*(b-a)+0
        yi = rnd.random()*(b-a)+0
        limite = f(xi)
        if xi>mitad and yi<=limite:
            dentro = dentro +1
        if xi<=mitad and yi<=limite and yi>=mitad:
            dentro = dentro +1
        X.append(xi)
        Y.append(yi)
        i = i+1
    
    # SALIDA
    print(' de n puntos: ', n)
    print(' dentro estaban: ', dentro)
    
    
    # Grafica
    plt.scatter(X,Y)
    xi = np.linspace(a,b,n+1)
    plt.plot(xi,f(xi))
    plt.axhline(mitad)
    plt.axvline(mitad)
    plt.xlim(a,b)
    plt.ylim(a,b)
    plt.xlabel('xi')
    plt.ylabel('yi')
    plt.show()
    
  • s1Eva_IT2001_T5 Verificar divisibilidad para 9

    Ejercicio: 1Eva_IT2001_T5 Verificar divisibilidad para 9

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

    Para la separación de los dígitos de un número entero se usa el residuo de la división para 10.

    Por ejemplo:

    para el número 15,
    el residuo para 10 es 5
    y el cociente es 1

    La instrucción en Python que obtiene el residuo es

    digito = numero%10

    y la que obtiene el cociente

    numero = numero//10

    Una respuesta simplificada es un valor de verdad 1 o 0 para verdadero y falso, que es la que se usa en éste ejemplo.

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


    Algoritmo en Python: mientras-repita

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IT2001_T5 Verificar divisibilidad para 9
    # Propuesta de solución. edelros@espol.edu.ec
    
    # INGRESO
    numero = int(input('Número a verificar divisibilidad 9: '))
    
    # PROCEDIMIENTO
    sumacifra = 0
    # Extrae las cifras
    while (numero>0):
        digito    = numero%10
        sumacifra = sumacifra+digito
        numero    = numero//10
    
    if (sumacifra>9):
        numero = sumacifra
        sumacifra = 0
        while (numero>0):
            digito    = numero%10
            sumacifra = sumacifra+digito
            numero    = numero//10
    
    if (sumacifra==9):
        respuesta = 1
    else:
        respuesta = 0
    
    # SALIDA
    print(respuesta)
    

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


    Algoritmo en Python: repita-hasta

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IT2001_T5 Verificar divisibilidad para 9
    # Propuesta de solución. edelros@espol.edu.ec
    
    # INGRESO
    numero=int(input('Numero a verificar divisibilidad 9: '))
    
    # PROCEDIMIENTO
    sumacifra=0
    # Extrae las cifras
    while not(numero==0):
        digito=numero%10
        sumacifra=sumacifra+digito
        numero=numero//10
    
    if (sumacifra>9):
        numero=sumacifra
        sumacifra=0
        while not(numero==0):
            digito=numero%10
            sumacifra=sumacifra+digito
            numero=numero//10
    
    if (sumacifra==9):
        respuesta=1
    else:
        respuesta=0
    
    # SALIDA
    print(respuesta)
    

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


    Diagrama de Flujo: Mientras-Repita

    Diagrama de Flujo 1. Ejercicio Verificar divisibilidad para 9 con Mientras-repita

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


    Diagrama de flujo: Repita-Hasta

    Diagrama de Flujo 2 - Ejercicio Verificar divisibilidad para 9 con Repita-Hasta

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


    Propuesta de solución con diagrama de flujo:

    ejercicios resueltos Python Parc_IIT2001_T5 pdf

    ejercicios resueltos Matlab parc_iit2001_t5 pdf

  • 2Eva_IIT2014~T4 Prueba de escritorio, lazos y contadores

    2da Evaluación II Término 2014-2015, Febrero 2015 /FIEC

    Tema 4. (15 puntos) Analice el código fuente de los programas que se muestran a continuación. Seleccione la respuesta correcta y justifique brevemente su respuesta.

    #include<stdio.h>
    int main()
    {
        int i;
        for(i=0,i<5,i++)
        {
           int i=10;
           printf("%d",i);
           i++
        }
        return 0;
    }

    La salida del programa sería:

    A. 10 11 12 13 14
    B. 10 10 10 10 10
    C. 0 1 2 3 4
    D. Error de compilación
    #include<stdio.h>
    int main()
    {
        int x; a=2;
        x=++a,++a,a++;
        printf("%d  %d",x,a);
        return 0;
    }

    La salida del programa sería:

    A. 5 5
    B. 3 5
    C. 4 5
    D. 5 4

     

  • 2Eva_IIT2014~T3 Función contar palabras

    2da Evaluación II Término 2014-2015, Febrero 2015 /FIEC

    Tema 3. (35 puntos) La utilidad de contar palabras y convertir caracteres a mayúsculas es parte de los procesadores de texto. Como programador a usted se le solicita implementar las dos funciones descritas en los literales siguientes

    a) Una función que permita contar palabras de un archivo de texto.  contarPalabras(nombre_archivo) recibe la cadena nombre_archivo con la dirección absoluta del archivo de texto al cual se debe contar las palabras.

    La función debe retornar el número de palabras que contiene el archivo de texto, 0 en caso de estar vacío o que el archivo no exista y -1 si ocurre un error de Entrada/Salida.

    Nota: Asuma que cada palabra está separada por un espacio y por saltos de línea

    b) Una función que cree un nuevo archivo con su contenido en mayúsculasconvertirMayusculas (nombre_archivo) que recibe la cadena nombre_archivo con la dirección absoluta del archivo de texto a convertir a mayúsculas. La función debe retornar 1 si puede escribir el nuevo archivo, 0 si no es posible escribirlo.

    El nuevo archivo debe ser ubicado en la carpeta temporal c:\temp y nombre “mayusculas_tmp.txt”.

    Nota: Considere cambiar únicamente las letras del alfabeto de la A-Z.

    Rúbrica: literal a (15 puntos), literal b (20 puntos)

    Referencia: 3Eva_IIT2008_T1 Contar palabras para un clasificado

  • 2Eva_IIT2014~T2 Punto de silla de una matriz

    2da Evaluación II Término 2014-2015, Febrero 2015 /FIEC

    Tema 2. (25 puntos) Se dice que una matriz de números enteros tiene un punto de silla si algún elemento de la matriz es el menor de los elementos de su fila y a la vez el mayor de los elementos de su columna.

    A B C
    1 1 2 3
    2 3 3 5
    3 5 1 2

    Ejemplo: El elemento ubicado en la coordenada 2B es un punto de silla

    A usted se le solicita implementar la función esPuntoSilla(matriz,fila,columna), que recibe una matriz de enteros y la coordenada de un elemento.

    Retorna 1 si el elemento es un punto de silla, caso contrario retorna 0.

  • 3Eva_IIT2013_T4 Gestionar asientos en cine

    3ra Evaluación II Término 2013-2014, Febrero 25, 2014 /ICM00794

    Tema 4. (35 puntos) Realice un programa para una sala de cine que gestione la venta de boletos con asientos asignados usando el menú mostrado. sala de cines asientos

    Menú
    1. Vender Boletos
    2. Mostrar asientos
    3. Contar vendidos
    4. Buscar libre
    5. Salir 

    Los asientos se identifican por un código formado por una letra y un número equivalentes a la ubicación en filas identificadas desde la A hasta la J, y las columnas de 1 al 20.

    Ejemplo: asiento E3 corresponde fila 3, columna 5
    • Para vender un boleto se solicita el código del asiento, se valida que exista y que se encuentra libre para registrar el número de cédula del cliente, sino se indica que está ocupado.
    • Al mostrar estado de asientos se presenta una matriz con valores 0 como un asiento libre y 1 como ocupado.
    • Buscar un asiento libre muestra la ubicación del primer asiento disponible más cercano a la última fila.
    Ejemplo de asientos
    1 2 3 4 5 6 7 8 ...
    A 0 0 0 0 0 0 0 0
    B 0 0 0 1 1 0 0 0
    C 0 0 0 0 0 0 0 0
    D 0 0 0 0 1 1 0 0
    E 0 0 0 1 1 0 0 0
    F 0 0 0 0 1 1 0 0
    ...

    Sugerencia: puede usar buscarcadena(alfabeto,letra) del tema anterior, para transformar la letra al número de fila. Ejemplo: fila E es fila 5

    Rúbrica: Menú (5 puntos), convertir código asiento a fila/columna (10 puntos), caso 1 (5 puntos), caso 2 y 3 (7 puntos), caso 4 (8 puntos).

  • 3Eva_IIT2013_T3 buscar cadena en una frase

    3ra Evaluación II Término 2013-2014, Febrero 25, 2014 /ICM00794

    Tema 3. (25 puntos) Realice una función en buscarcadena(frase, cadena) que entrega un vector con la posición inicial de todas las veces que aparece una cadena de caracteres en una frase.

    >>frase= ‘cada proyecto tiene programas y compromisos’
    >>cadena=’pro’
    >> buscarcadena(frase, cadena) ans = 6 21 36

    Nota: Se debe describir el algoritmo completo, NO use la función strfind() incluida en matlab,
    Rúbrica: Definir función (5 puntos), buscar letra (5 puntos), validar cadena buscada (5 puntos) crear vector de resultados (10 puntos)

  • 3Eva_IIT2013_T2 Ordena por diagonal principal

    3ra Evaluación II Término 2013-2014, Febrero 25, 2014 /ICM00794

    Tema 2. (20 puntos) Uno de los pasos que se requieren en los algoritmos para resolver un sistema de ecuaciones lineales consiste en intercambiar las filas de una matriz cuadrada para colocar en la diagonal principal los elementos de mayor magnitud de cada columna.

    Ejemplo:
    [ 2 7 6 ]  [ 9 0 0 ]  [ 9 0 0 ]
    [ 4 5 3 ] →[ 4 5 3 ] →[ 2 7 0 ]
    [ 9 8 1 ]  [ 2 7 6 ]  [ 4 5 3 ]

    Escriba una función prepara(matriz) que reciba una matriz cuadrada nxn, intercambie las filas desde arriba hacia abajo de tal manera que el elemento de mayor magnitud de cada columna se ubique en la diagonal, sustituya con ceros el resto de la fila hacia la derecha. La función entrega la matriz transformada, como se muestra en el ejemplo.

    Nota: en el algoritmo puede usar la función del tema anterior.
    Rúbrica: Definir función (5 puntos), seleccionar el mayor (5 puntos), describir procedimiento estructurado (10 puntos)

  • 3Eva_IIT_2013_T1 Intercambiar filas o columnas en matriz

    3ra Evaluación II Término 2013-2014, Febrero 25, 2014 /ICM00794

    Tema 1. (20 puntos). Realice una función intercambiar(matriz, a, b, tipo), que al recibir una matriz intercambie las filas o columnas a y b.

    El parámetro tipo con el valor 1 permite intercambiar entre las filas a y b, pero si tiene el valor de 2 se intercambian las columnas a y b.

    matriz=
    [ 2 7 6 ]
    [ 4 5 3 ]
    [ 9 8 1 ]
    >>intercambiar(matriz, 1, 3, 1)
    [ 9 8 1 ]
    [ 4 5 3 ]
    [ 2 7 6 ]
    
    >>intercambiar(matriz, 1, 3, 2)
    [ 6 7 2 ]
    [ 3 5 4 ]
    [ 1 8 9 ]
    

    Rúbrica: Definir la función (5 puntos), intercambiar valores entre celdas (5 puntos), intercambiar toda la fila o columna (10 puntos)