Autor: Edison Del Rosario

  • 3Eva_IIIT2004_T2 Control de sillas en auditorium

    Mejoramiento III Término 2004 - 2005. Marzo, 2005 /ICM00794

    Tema 2. Para control de uso de las sillas para un evento, se usará una matriz de tamaño nxm. sillasevento01

    Para indicar usa silla libre, se escribirá '0' en el elemento correspondiente de la matriz, y para indicar una silla ocupada se escribirá '1'.

    Diseñe un programa interactivo que mediante un menú permita realizar las siguientes acciones:

    1. Asignar silla
    2. Devolver silla
    3. Consultar silla
    4. Salir

    Inicialmente todas las sillas estarán vacias.

  • 3Eva_IIIT2004_T1 Carrera de ranas

    Mejoramiento III Término 2004 - 2005. Marzo, 2005 /ICM00794

    Tema 1. Dos ranas están en el inicio de una pista de 20 m.ranas carreras

    En cada turno cada rana realiza aleatoriamente una de las siguientes acciones:

    1. No se mueve
    2. salta un metro
    3. salta dos metros

    Escriba un programa que simule el recorrido de ambas ranas y determine cuál gana la carrera y cuántos saltos realizó.


    Rúbrica: control de corredores (5 puntos), generar aleatorios (5 puntos), control de carrera (5 puntos), contrador de saltos (5 puntos), programa estructurado (5 puntos)

  • s3Eva_IIIT2004_T4 Enmascara frase cambiando pareja de letras

    Ejercicio: 3Eva_IIIT2004_T4 Enmascara frase cambiando pareja de letras

    resultado obtenido:

    frase :TE SALUDO
    enmascarada:   ETLASODU
    >>>
    

    Algoritmo en Python

    # 3Eva_IIIT2004_T4 Enmascara frase cambiando pareja de letras
    
    # INGRESO
    frase = input('frase :')
    salto = 2
    
    # PROCEDIMIENTO
    n = len(frase)
    # posiciones iniciales de letras
    posicion = []
    for i in range(0,n,1):
        posicion.append(i)
    
    # intercambia posiciones
    i = 0
    while i<n:
        if (i+salto)<n:
            temporal = posicion[i]
            posicion[i] = posicion[i+salto]
            posicion[i+salto] = temporal
        i = i + salto + 1
    
    # reordena letras
    reordena = ''
    for i in range(0,n,1):
        cual = posicion[i]
        reordena = reordena + frase[cual]
    
    # SALIDA
    print('enmascarada: ', reordena)
    
  • s3Eva_IIIT2004_T1 Carrera de ranas

    Ejercicio3Eva_IIIT2004_T1 Carrera de ranas

    Resultados esperados:

    longitud de la pista: 20
    ganador:  A
    saltos:  16
    >>> 
    
    longitud de la pista: 20
    ganador:  B
    saltos:  23
    >>> 
    

    Algoritmo en Python

    # 3Eva_IIIT2004_T1 Carrera de ranas
    import random as rnd
    
    # INGRESO
    n = int(input('longitud de la pista: '))
    
    # PROCEDIMIENTO
    A = 0
    B = 0 
    turno = 0
    gana = ''
    while gana=='':
        saltoA = int(rnd.random()*3)+0
        saltoB = int(rnd.random()*3)+0
        A = A + saltoA
        B = B + saltoB
        turno = turno + 1
        if A>n:
            gana = 'A'
        if B>n:
            gana = 'B'
    
    # SALIDA
    print('ganador: ', gana)
    print('saltos: ',turno)
    

    Tarea: Considere que los turnos de saltos no corresponden a los saltos de cada rana, observe cuando se queda en el mismo puesto, no es un salto.

  • 3Eva_IT2004_T4 Manejar inventario de ferretería

    Mejoramiento I Término 2004 - 2005. Agosto 31, 2004 /ICM00794

    Tema 4. Escriba un programa en C/C++ que permita controlar las herramientas de una ferretería en el archivo C:\producto.txt, implementando el siguiente menú:

    1. Ingreso de una nueva herramienta
    2. Compra de una herramienta existente
    3. Venta de una herramienta existente
    4. Consulta Individual de una herramienta
    5. Reporte de herramientas
    6. Salir

    Escriba la función en C/C++ que permita hacer la compra de una herramienta existente.

    Suponga que las demás funciones ya están implementadas.

    Utilice la siguiente estructura para la información:

    No. de registro Nombre de herramienta Cantidad
    1 Martillo 76
    2 Sierra 21
    3 Pinzas 18
    4 Destornillador 106
    5 Llave de tuerca 34
  • 3Eva_IT2004_T3 Multiplicar con campesino egipcio

    Mejoramiento I Término 2004 - 2005. Agosto 31, 2004 /ICM00794

    Tema3. Para efectuar la multiplicación entre 2 números enteros p y q, se puede utilizar un método recursivo denominado el Campesino Egipcio:

    mult(p,q) = \begin {cases} 0 , && q=0 \\ p ,&& q=1 \\ mult \Big(2p,cociente\big(\frac{q}{2}\big)\Big) , && q\ge 2 \text {, q es par} \\ mult \Big(2p,cociente\big(\frac{q}{2}\big)\Big)+p , && q\ge 2 \text{, q es impar }\end{cases}

    a) Escriba la función recursiva mult(p,q) en C/C++ que reciba dos argumentos enteros p y q, y devuelva el resultado de su multiplicación.

    b) Escriba un programa en C/C++ que, pida al usuario un número entre 0 y 12 y muestre la tabla de multiplicar de dicho número, utilizando la función anterior.

    Rúbrica: función recursiva (8 puntos), validar número para tabla (4 puntos), tabla de multiplicar con función recursiva (4 puntos), salida ordenada (4 puntos)


    Referencia:  Matemática egipcia. https://es.wikipedia.org/wiki/Matem%C3%A1tica_egipcia

    Multiplicación por duplicación. https://es.wikipedia.org/wiki/Multiplicaci%C3%B3n_por_duplicaci%C3%B3n

  • 3Eva_IT2004_T2 Realizar el producto vectorial

    Mejoramiento I Término 2004 – 2005. Agosto 31, 2004 /ICM00794

    Tema 2. Escriba una función prod_vectorial(a,b) que reciba como argumento dos estructuras correspondientes a dos vectores a y b en IR3 y retorne otra estructura correspondiente al vector que representa su producto vectorial (producto cruz).

    Ej: si a=(1,3,1) y b=(-2,1,0) entonces:
     La función debe retornar el vector (-1,-2,7)
    i j k
    1 3 1
    -2 1 0
    axb = i(3*0 - 1*1)-j(1*0-(-2*1)+k(1*1-(-2*3))
        = -i+2j+7k

    Escriba un programa en C/C++ que pida al usuario las coordenadas de dos vectores (valores enteros) y muestre el resultado de su producto vectorial.

  • 3Eva_IT2004_T1 Buscar número al lanzar el dado

    Mejoramiento I Término 2004 – 2005. Agosto 31, 2004 /ICM00794

    Tema 1. Escriba la función al_fin(n,k) en C++ que reciba dos argumentos enteros:

    • n representa la cara de un dado (1≤n≤6), números aleatorios) y
    • k representa el número de éxitos que deben aparecer esa cara.

    La función devolverá la cantidad de pruebas que se realizaron hasta conseguir los k éxitos.

    Escriba un programa en C/C++ que llame a la función anterior m veces y encuentre las frecuencias en que aparecen los m resultados.

  • s3Eva_IT2004_T3 Multiplicar con campesino egipcio

    Ejercicio: 3Eva_IT2004_T3 Multiplicar con campesino egipcio

    Literal a. La función en forma recursiva considera cuatro casos para q y el residuo de q con 2. Usar un condicional en cada caso siguiendo lo descrito en la fórmula.

    mult(p,q) = \begin {cases} 0 , && q=0 \\ p ,&& q=1 \\ mult \Big(2p,cociente\big(\frac{q}{2}\big)\Big) , && q\ge 2 \text {, q es par} \\ mult \Big(2p,cociente\big(\frac{q}{2}\big)\Big)+p , && q\ge 2 \text{, q es impar }\end{cases}

    Literal b.  Requiere que sea un programa estructurado, separando las partes de las funciones de usuario y el programa que lo usa.

    En el bloque de ingreso del programa se pide cuál tabla de multiplicar se va a generar. Se requiere que la tabla se genere usando la función creada en el literal a.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2004_T3 Multiplicar con campesino egipcio
    # propuesta: edelros@espol.edu.ec
    
    def mult(p,q):
        if q==0:
            z = 0
        if q==1:
            z = p
        r = (q%2)
        if (q>=2 and r==0):
            z = mult(2*p, int(q/2))
        if (q>=2 and r>0):
            z = mult(2*p, int(q/2))+p
        return (z)
    
    # PROGRAMA ---------------
    import numpy as np
    
    # INGRESO
    n = int(input('¿cual tabla?: '))
    
    # PROCEDIMIENTO
    r = np.zeros(13,dtype=int)
    i = 1
    while (i<=12):
        r[i] = mult(n,i)
        i = i + 1
    
    # SALIDA
    i=1
    while (i<=12):
        print(str(n)+' x '+str(i)+' = ',str(r[i]))
        i = i + 1
    

    Tarea: validar n entre cero y 12

    resultado del algoritmo

    ¿cual tabla?: 8
    8 x 1 =  8
    8 x 2 =  16
    8 x 3 =  24
    8 x 4 =  32
    8 x 5 =  40
    8 x 6 =  48
    8 x 7 =  56
    8 x 8 =  64
    8 x 9 =  72
    8 x 10 =  80
    8 x 11 =  88
    8 x 12 =  96
    >>> 
    

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

    ejercicios resueltos Python mejo_it2004_t3 pdf

    ejercicios resueltos Matlab mejo_it2004_t3 pdf

  • s3Eva_IT2004_T2 Realizar el producto vectorial

    Ejercicio: 3Eva_IT2004_T2 Realizar el producto vectorial

    resultado obtenido

    [-1, 2, 7]
    >>> 
    

    Algoritmo en Python

    # 3Eva_IT2004_T2 Realizar el producto vectorial
    
    # INGRESO
    A = [1,3,1]
    B = [-2,1,0]
    
    # PROCEDIMIENTO
    c0 = A[1]*B[2]-B[1]*A[2]
    c1 = A[0]*B[2]-B[0]*A[2]
    c2 = A[0]*B[1]-B[0]*A[1]
    
    C = [c0,c1,c2]
    
    # SALIDA
    print(C)