Categoría: Solución 1ra Evaluación

  • 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ú')
    
    
  • 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

  • s1Eva_IIT2013_T3 Juego Semillero

    Ejercicios: 1Eva_IIT2013_T3 Juego Semillero

    Propuesta de solución en Python, realizada solo para dos jugadores.

    Observe que al lanzar dos dados, el intervalo de valores posibles es [2,12].

    dado1 = int(rnd.random()*6)+1
    dado2 = int(rnd.random()*6)+1
    suma  = dado1 + dado2
    

    La variable quien determina el turno del jugador.

    Se lanzan los dados como números aleatorios, se acumula los puntos para cada jugador y se resta la cantidad de fichas del semillero.

    if (suma<=semillero):
        A = A + suma
        semillero = semillero -suma
    else:
        A = A +semillero
        semillero = 0
    

    Se cambia el turno del jugador y se repite el proceso.

        # cambia jugador
        if (quien==1):
            quien = 2
        else:
            quien = 1
    

    TAREA: Implementar con arreglos para n jugadores.


    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2013_T3 Juego Semillero
    # usando solo dos jugadores
    import random as rnd
    
    # INGRESO
    apuesta = int(input('cuantas canicas: '))
    while not(apuesta>=20):
        apuesta = int(input('mas de 20 canicas: '))
    
    # PROCEDIMIENTO
    semillero = 2*apuesta
    A = 0
    B = 0
    quien = 1
    while not(semillero<=0):
    
        # Juega A
        if (quien==1):
            dado1 = int(rnd.random()*6)+1
            dado2 = int(rnd.random()*6)+1
            suma  = dado1 + dado2
            if (suma<=semillero):
                A = A + suma
                semillero = semillero -suma
            else:
                A = A +semillero
                semillero = 0
    
        # Juega B
        if (quien==2):
            suma = int(rnd.random()*11)+2
            if (suma<=semillero):
                B = B + suma
                semillero = semillero - suma
            else:
                B = B + semillero
                semillero = 0
                
        # cambia jugador
        if (quien==1):
            quien = 2
        else:
            quien = 1
    
    # Determina ganador
    gana = 1
    if (A < B):
        gana = 2
    if (B==A):
        gana = 0
        
    # SALIDA
    print('canicas de A: ', A)
    print('canicas de B: ', B)
    print('estado semillero: ', semillero)
    print('jugador ganador: ', gana)
    

    Ejecución del algoritmo

    cuantas canicas: 20
    canicas de A:  25
    canicas de B:  15
    estado semillero:  0
    jugador ganador:  1
    >>> 
    cuantas canicas: 20
    canicas de A:  20
    canicas de B:  20
    estado semillero:  0
    jugador ganador:  0
    >>> 
    cuantas canicas: 20
    canicas de A:  22
    canicas de B:  18
    estado semillero:  0
    jugador ganador:  1
    >>> 
    
  • s1Eva_IIT2013_T2 Números palíndromo con Python

    Ejercicios: 1Eva_IIT2013_T2 Números palíndromo con Python

    Literal a. Para invertir los dígitos de un número, se usan residuo y el cociente para extraer cada dígito y rearmarlo en otro número con posiciones invertidas.

    Sec compara el número de forma inversa para verificar si el igual al número original, siendo solamente así un número palíndromo.

    Tarea: implementar el literal b a partir de la solución del literal a.

    Para iniciar la búsqueda de los números palíndromos se inicia con dos dígitos es decir numero=10. Se aplica el algoritmo al número y se repite el proceso con un lazo hasta llegar al millón-1

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2013_T2 Números palíndromo
    
    # INGRESO
    numero = int(input('numero a revisar: '))
    
    # PROCEDIMIENTO
    numcopia = numero
    cociente = numero
    
    # invierte dígitos del número
    invertido = 0
    while not(cociente<=0):
        numcopia = cociente
        cociente = numcopia//10
        residuo  = numcopia%10
        invertido = invertido*10 + residuo
    
    # revisa si el número es igual a invertido
    if (invertido == numero):
        palindromo = 1
    else:
        palindromo = 0
    
    # SALIDA
    print('numero invertido: ', invertido)
    print('Palindromo:', palindromo)
    

    Ejecución del algoritmo

    numero a revisar: 1991
    numero invertido:  1991
    Palindromo: 1
    >>> 
    numero a revisar: 2112
    numero invertido:  2112
    Palindromo: 1
    >>> 
    numero a revisar: 2020
    numero invertido:  202
    Palindromo: 0
    >>>