Autor: Edison Del Rosario

  • s1Eva_IIT2005_T4 Juego escaleras y serpientes

    Ejercicio: 1Eva_IIT2005_T4 Juego escaleras y serpientes

    Algoritmo: [ mientras-repita ] [ repita-hasta ] ; [ diagrama flujo ]escaleraserpiente

    En un primer bosquejo, no se considera el lanzar la moneda para ver cuál jugador inicia, semejante al ajedrez en que las fichas blancas salen primero sin considerar el nombre del jugador.

    Para determinar las posiciones de las fichas en el tablero, se usarán acumuladores para cada jugador A y B, usando como variables “fichaa” y “fichab”.

    # jugador A
    dadoa = int(rnd.random()*6)+1
    fichaa = fichaa + dadoa
    

    Serán necesarios otras variables como el contador para el turno, cada jugador dispondrá de una variable generada de forma aleatoria dadoa, dadob, que simula un dado de 6 caras.

    Se lanza el dado para el jugador A, se avanza acumulando conforme a los puntos del dado, se valida el premio o castigo para luego repetir el proceso para el jugador B, repitiendo el proceso hasta que alguna ficha se ubique o pase la casilla de “llegada”.

        if (fichaa==4 or fichaa==9 or fichaa==29 or fichaa==34 or fichaa==46):
            fichaa = fichaa + 3
        if (fichaa==8 or fichaa==19 or fichaa==38 or fichaa==50 or fichaa==60):
            fichaa = fichaa - 3
    

    Terminado el proceso anterior, se determina cuál jugador ganó, observe que se supone que gana tiene inicialmente el valor de 0, para tener la opción de registrar un empate.

    Al final se muestran los resultados del juego simulado.

    Tarea: Resolver con el lanzamiento de la moneda para ver cuál inicia.

    Algoritmo: [ mientras-repita ] [ repita-hasta ] ; [ diagrama flujo ]

    ..


    Algoritmo en Python: Mientras-Repita

    Primero se presenta la solución usando lazo “Mientras-Repita”, luego se muestra la versión con el lazo “Repita-Hasta” que se puede escribir en otros lenguajes de programación.

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2005_T4 Juego escaleras y serpientes
    # Propuesta de solución: edelros@espol.edu.ec
    
    import random as rnd
    
    # INGRESO
    # Sortear quién empieza
    
    # PROCEDIMIENTO
    llegada = 64
    fichaa = 0
    fichab = 0
    
    turno = 0
    while (fichaa<llegada or fichab<llegada):
    
        # jugador A
        dadoa = int(rnd.random()*6)+1
        fichaa = fichaa + dadoa
        if (fichaa==4 or fichaa==9 or fichaa==29 or fichaa==34 or fichaa==46):
            fichaa = fichaa + 3
        if (fichaa==8 or fichaa==19 or fichaa==38 or fichaa==50 or fichaa==60):
            fichaa = fichaa - 3
    
        #jugador B
        dadob = int(rnd.random()*6)+1
        fichab = fichab + dadob
        if (fichab==4 or fichab==9 or fichab==29 or fichab==34 or fichab==46):
            fichab = fichab + 3
        if (fichab==8 or fichab==19 or fichab==38 or fichab==50 or fichab==60):
            fichab = fichab - 3
    
        turno = turno + 1
    
    # Revisa ganador
    gana = 0
    if fichaa > fichab:
        gana = 1
    if fichab > fichaa:
        gana = 2
    
    # SALIDA
    print('gana el jugador: ')
    print(gana)
    print('turnos jugados:')
    print(turno)
    

    Ejecución del algoritmo

    gana el jugador: 
    2
    turnos jugados:
    16
    >>> 
    gana el jugador: 
    2
    turnos jugados:
    16
    >>> 
    

    Algoritmo: [ mientras-repita ] [ repita-hasta ] ; [ diagrama flujo ]
    ..


    Algoritmo en Python: Repita-Hasta

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2005_T4 Juego escaleras y serpientes
    # Propuesta de solución. edelros@espol.edu.ec
    
    import random as rnd
    
    # INGRESO
    # Sortear quién empieza 
    # PROCEDIMIENTO
    
    llegada = 64
    fichaa = 0
    fichab = 0
    
    turno = 0
    while not(fichaa>=llegada or fichab>=llegada):
    
        # jugador A
        dadoa = int(rnd.random()*6)+1
        fichaa = fichaa+dadoa
        if (fichaa==4 or fichaa==9 or fichaa==29 or fichaa==34 or fichaa==46):
            fichaa = fichaa+3
        if (fichaa==8 or fichaa==19 or fichaa==38 or fichaa==50 or fichaa==60):
            fichaa = fichaa - 3
    
        #jugador B
        dadob = int(rnd.random()*6)+1
        fichab = fichab + dadob
        if (fichab==4 or fichab==9 or fichab==29 or fichab==34 or fichab==46):
            fichab = fichab + 3
        if (fichab==8 or fichab==19 or fichab==38 or fichab==50 or fichab==60):
            fichab = fichab - 3
    
        turno = turno+1
    
    gana = 0
    if fichaa>fichab:
        gana = 1
    
    if fichab>fichaa:
        gana = 2
    
    # SALIDA
    print('gana el jugador: ')
    print(gana)
    print('turnos jugados:')
    print(turno)
    

    Algoritmo: [ mientras-repita ] [ repita-hasta ] ; [ diagrama flujo ]
    ..


    Diagrama de Flujo

     

    Algoritmo: [ mientras-repita ] [ repita-hasta ] ; [ diagrama flujo ]

    Propuesta de solución:

    ejercicios resueltos Python parc_iit2005_t4 pdf

    ejercicios resueltos Matlab parc_iit2005_t4 pdf

  • 1Eva_IT2010_T3 Bodega de productos perecibles

    1ra Evaluación I Término 2010-2011. Julio 6, 2010 /ICM00794

    Tema 3 (25 puntos). Una empresa dispone en su bodega un producto que se administra en grupos como se muestra en la tabla del ejemplo.

    Los clientes que adquieren este producto son de tipo (1)“tienda” o (2)“supermercado” y se los atiende en base a las siguientes políticas de venta:

    • Las tiendas compran en menor cantidad y venden rápidamente su producto, por lo que se les despacha primero las unidades del grupo de menor duración, si no hay suficientes, se les completa con el grupo que dure un poco más y que esté disponible.
    • Los supermercados compran en mayor volumen manteniendo el producto almacenado, por lo que se les despacha primero las unidades mayor duración, si no hay suficientes, se les completa con el grupo con unidades de menor duración.

    Realice un algoritmo que permita atender los clientes, ingresando por grupo las cantidades en bodega y luego para la solicitud del cliente ingrese: tipo de cliente y la cantidad pedida.

    El algoritmo deberá seleccionar por cada grupo las cantidades para el despacho del producto para ese cliente y mostrar al final los saldos en bodega de cada grupo.

    Ejemplo de producto en bodega:
    grupo 1 2 3
    Duración máxima (días) 30 90 180
    Cantidad [grupo] 100 200 1000
    Tipo cliente: 1 /Tienda
    Cantidad pedida: 150
    Despacho [grupo] 100 50 0
    Saldo bodega:
    Cantidad [grupo]
    0 150 1000

    Rúbrica: Ingreso de datos (5 puntos), selección de grupo (10 puntos), saldo en bodegas (5 puntos), algoritmo completo e integrado (5 puntos)

  • 1Eva_IIT2010_T3 Juego del amigo secreto

    1ra Evaluación II Término 2010-2011. Diciembre 7, 2010 /ICM00794

    Tema 3 (40 puntos) El “amigo secreto” es un juego en el que participan igual número de hombres y mujeres para darse regalos entre sí.

    http://www.fabu.com.ec/2017/12/22/ideas-para-el-amigo-secreto/
    http://www.fabu.com.ec/2017/12/22/ideas-para-el-amigo-secreto/

    Los “amigos secretos” se sortean previo a la celebración de tal forma que a cada participante le toque otro de género opuesto elegida aleatoriamente y sin que sea asignada más de una vez.

    El día de la celebración, se colocan los regalos en un mismo lugar.

    Un participante inicia la entrega de regalos, quién lo recibe debe abrirlo ante todos y posteriormente proceder de la misma forma hasta terminar con todos los regalos.

    Escriba un algoritmo para realizar el sorteo “amigo secreto” que solicite el número de parejas n y muestre las parejas generadas.

    Sugerencia: Los caballeros se numeran entre 1 y n, y las damas se numeran entre (n+1) y 2n.

    Ejemplo:
    Número de parejas: 10
    i AmigA(i)
    1 14
    2 11
    3 18
    ...
    10 15
    j AmigO(j)
    11 5
    12 8
    13 1
    ...
    20 7

    Referencia: http://es.wikipedia.org/wiki/Amigo_invisible

    Rúbrica: Sorteo de amigos (15 puntos). Asignaciones no repetidas (20 puntos). Mostrar resultados (5 puntos).

  • s1Eva_IIT2005_T3 Entrenamiento atleta: promedios

    Ejercicio: 1Eva_IIT2005_T3 Entrenamiento atleta: promedios

    [ algoritmo ] [ diagrama flujo ]

    Pedir la cantidad de mediciones n a tabular

    n = int(input('¿días a cronometrar?: '))
    

    Ingresar todos los tiempos en un arreglo de n elementos.

    # Inicia tabla de tiempos
    tiempo = np.zeros((n+1),dtype=int)
    dia = 1
    while (dia<=n):
        print('tiempo[' + str(dia) + ']: ')
        tiempo[dia] = float(input(''))
        dia = dia + 1
    

    Empezar con el promedio anual, acumular en s todos los tiempos.

    # Promedio anual
    s = 0
    dia = 1
    while (dia<=n):
        s = s + tiempo[dia]
        dia = dia+1
    

    El promedio anual se obtiene con la suma s al dividirla para n.

    pranual = s/n

    Para el promedio mensual, desarrollar el algoritmo para el primer mes (día 1 al 30) y luego revisar la relación que existe entre el primer día del mes y el número del mes, revisar también para el último día del mes.

    Determinar la relación también para los días de la semana y el número de la semana, comparar resultados.

    Tarea: completar el algoritmo, pues la solución propuesta no desarrolla el promedio semanal.

    En el caso de Python, es necesario declarar el vector, al menos con valores de 0. Como la primera posición del arreglo es 0 y no existe el día 0, se aumentará el tamaño del vector en 1, a fin de usar el indicador de día de forma más natural.

    Se requiere importar la librería Numpy, para trabajar con los arreglos.

    [ algoritmo ] [ diagrama flujo ]
    ..


    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2005_T3 Entrenamiento atleta: promedios
    # Propuesta de solución. edelros@espol.edu.ec
    # Tarea: realizar promedio por semana
    
    import numpy as np
    
    # INGRESO
    n = int(input('¿días a cronometrar?: '))
    
    # Inicia tabla de tiempos
    tiempo = np.zeros((n+1),dtype=int)
    dia = 1
    while (dia<=n):
        print('tiempo[' + str(dia) + ']: ')
        tiempo[dia] = float(input(''))
        dia = dia + 1
    
    # PROCEDIMIENTO
    
    # Promedio anual
    s = 0
    dia = 1
    while (dia<=n):
        s = s + tiempo[dia]
        dia = dia+1
    pranual = s/n
    
    # Promedio mensual
    mes = 1
    maxmes = int(n/30)
    while (mes<=maxmes):
        s = 0
        dia = 1+30*(mes-1)
        while (dia<=(30*mes)):
            s = s+tiempo[dia]
            dia = dia+1
        prm[mes] = s/30
        mes = mes+1
    
    # SALIDA
    print('Promedio anual: ')
    print(pranual)
    print('Promedio mensual: ')
    mes = 1
    if maxmes==0:
        print('Meses completos: 0')
    while (mes<=maxmes):
        print(prm[mes])
        mes = mes+1
    
    # Se modificó el algoritmo para
    # probar con n de pocos días.
    

    Ejecución del algoritmo

    ¿días a cronometrar?: 5
    tiempo[1]: 
    20
    tiempo[2]: 
    18
    tiempo[3]: 
    23
    tiempo[4]: 
    19
    tiempo[5]: 
    22
    Promedio anual: 
    20.4
    Promedio mensual: 
    Meses completos: 0
    >>> 
    

    [ algoritmo ] [ diagrama flujo ]
    ..


    Diagrama de Flujo

    [ algoritmo ] [ diagrama flujo ]

    Propuesta de solución en Python, también en Matlab:

    ejercicios resueltos Python parc_iit2005_t3 pdf

    ejercicios resueltos Matlab parc_iit2005_t3 pdf

  • 1Eva_IIT2010_T2 Venta de pasajes tren turístico

    1ra Evaluación II Término 2010-2011. Diciembre 7, 2010 /ICM00794

    Tema 2 (30 puntos) En la estación de un tren turístico se instalará una máquina automática para la venta de pasajes que acepta billetes en dólares, euros y pesos.locomotora tren dibujo

    El comprador indicará el número de pasajes, tipo de moneda y la cantidad de dinero con lo cual la maquina realiza la conversión a pesos, ejecuta el cobro y de ser necesario entrega el cambio en pesos.

    Suponga que el tren tiene capacidad para 150 pasajeros, que el tipo de cambio es 2.5 pesos/dólar, 3.25 pesos/euro y que el precio del pasaje es de 7 pesos.

    Escriba un algoritmo que simule la máquina de venta de pasajes, para n turnos de compra o hasta completar la capacidad tren, considerando que un comprador puede pedir más de un boleto.

    La maquina vende los pasajes cuando el comprador entrega la cantidad suficiente de dinero y aún hay asientos disponibles.

    Al final de las ventas muestre la cantidad de boletos vendidos, total de pesos cobrados y devuelto como cambio.

    Ejemplo:
     ¿Cuantos turnos?: 5 
     Turno 1 
      ¿cuántos pasajes?: 3
      Monedas: 1.Dolar 2.Euro 3.Peso
      ¿Tipo Moneda?: 1
      ¿Cantidad de Dinero?: 10
      su cambio: 4
     Turno 2 
      ¿Cuántos pasajes?:
     …

    Rúbrica: Ingreso de datos (5 puntos), cobro y cambio (10 puntos), validar ventas y asientos (10 puntos). Algoritmo integrado (5 puntos).


  • 1Eva_IT2010_T2 Número Omirp

    1ra Evaluación I Término 2010-2011. Julio 6, 2010 /ICM00794

    Tema 2. (25 puntos) Omirp se define como,
    un número primo que al invertir sus dígitos da otro número primo.

    Escriba un algoritmo para determinar si un número n tiene la característica de ser un número Omirp.

    Ejemplo:

     1597 es número primo,
     Se invierte sus dígitos: 7951
     7951 es primo,
     Entonces el número 1597 es un número omirp.

    Rúbrica: Validar si n es primo (7 puntos), invertir los dígitos del número (10 puntos), validar si el nuevo número es primo (3 puntos), respuesta y algoritmo integrado (5 puntos)

  • s1Eva_IIT2005_T2 Negocio piramidal

    Ejercicio: 1Eva_IIT2005_T2 Negocio piramidal

    [ algoritmo ] [ diagrama flujo ]

    Para la solución, considere las operaciones descritas en el orden lógico de ejecución: depósitos, comisiones e intereses pagados para calcular el saldo.

    siendo x la cantidad de depositantes.

    deposito = invitado*x
    comision = 0.20*deposito
    interespaga = 0.10*x*participa
    saldo = saldo+deposito-comision-interespaga
    participa = participa+invitado

    El control de participantes e invitados permitirá calcular apropiadamente los depósitos de los invitados y los intereses pagados a los participantes.

    Los meses se cuentan para cada iteración hasta que se cumpla la condición que los intereses pagados sean mayores al saldo.

    while (interespaga<=saldo):

    [ algoritmo ] [ diagrama flujo ]
    ..


    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2005_T2 Negocio piramidal
    # Propuesta de solución: edelros@espol.edu.ec
    
    # INGRESO
    x = int(input('cantidad por depositante: '))
    n = int(input('personas en el mercado: '))
    
    # PROCEDIMIENTO
    mes = 0
    invitado = 1
    participa = 0
    
    saldo = 0
    interespaga = 0
    while (interespaga<=saldo):
        deposito = invitado*x
        comision = 0.20*deposito
        interespaga = 0.10*x*participa
        saldo = saldo+deposito-comision-interespaga
        participa = participa+invitado
    
        if (participa<=(n/2)):
            invitado = participa
        else:
            invitado = 0
        
        mes = mes+1
    
    # SALIDA
    print('meses con saldo disponible: ')
    print(mes)
    

    Ejecución del algoritmo

    cantidad por depositante: 100
    personas en el mercado: 1000
    meses con saldo disponible: 
    17
    >>>

    [ algoritmo ] [ diagrama flujo ]
    ..


    Diagrama de Flujo


    [ algoritmo ] [ diagrama flujo ]

    Propuesta de solución en Python, también en Matlab:

    ejercicios resueltos Python parc_iit2005_t2 py_pdf

    ejercicios resueltos Matlab parc_iit2005_t2 pdf

  • 1Eva_IT2010_T1 Bono para televisores en Uruguay

    1ra Evaluación I Término 2010-2011. Julio 6, 2010 /ICM00794

    Tema 1. (20 puntos). Para miles de ciudadanos uruguayos la clasificación de su selección a semifinales en el mundial de fútbol 2010 representó una alegría doble, pues la empresa que les vendió sus televisores les devolverá la mitad del valor de la compra, como había prometido si su equipo llegaba a semifinales.

    Realice un algoritmo para la empresa que reciba para n modelos de televisores: la cantidad vendida y el precio; para luego calcular el valor total y por tipo que tiene que devolver a sus clientes para cumplir con lo prometido.

    Ejemplo:
    Modelo Cantidad Precio Devolver
    LCD 250 400 50.000
    Plasma 120 1000 60.000
    LED 80 3000 120.000
    ... ... ... ...
    Total a Devolver: 230.000

    Rúbrica: Ingreso de datos (5 puntos), estimado de cantidad a devolver por grupo (10 puntos), mostrar resultados (5 puntos)

    Referencia: "Un milagro en ventas para miles de ciudadanos uruguayos". 04/ julio/2010 - EFE http://marcador.ec/notas/2010/07/04/un-milagro-en-ventas

  • 1Eva_IIT2010_T1 Censo de instrucción por género

    1ra Evaluación II Término 2010-2011. Diciembre 7, 2010 /ICM00794

    Tema 1 (30 puntos)

    El Censo 2010 es un recuento de la población y las viviendas para generar información estadística confiable, veraz y oportuna.

    Una vez que se ha obtenido toda la información, esta se procesa para generar datos estadísticos.

    Escriba un algoritmo que registre los datos de género y nivel de instrucción completados para n personas censadas, realice la tabulación respectiva en tablas de resultados de instrucción por género y muestre los resultados.

    Lista de género y nivel de instrucción:
    i Género [i] Instrucción [i] Género:
    1. Masculino
    2. FemeninoInstrucción:
    1. Primaria
    2. Secundaria
    3. Superior
    1 1 2
    2 2 3
    3 1 3
    ... ... ...
    n ... ...
    Instrucción por género:
    Masculino Femenino
    Primaria
    Secundaria
    Superior

    Rúbrica: Ingreso de datos (5 puntos), tabulación de datos (20 puntos), mostrar resultados (5 puntos)

    Referencia: http://www.censos2010.gob.ec/censos/inicio.html

  • 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