s1Eva_IT2011_T1 Ahorros de Juan vs Pedro

Ejercicio: 1Eva_IT2011_T1 Ahorros de Juan vs Pedro

Propuesta de solución en Python: py_pdf, también en versión matlab: py_pdf

Ingresar los datos para cada depositante en variables separadas.

Luego, calcular por cada año los saldos para cada depositante, repitiendo hasta que se cumpla la condición que Juan tenga más dinero que Pedro.

La variable “año” es un contador simple que inicia en cero, en finanzas significa el momento en que se deposita.

Cuando termina el año completo se considera incrementado en 1.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2011_T1 Ahorros de Juan vs Pedro
# Propuesta: edelros@espol.edu.ec

# INGRESO
ca = float(input('Banco A - Capital Inicial:   '))
ra = float(input('Banco A - Tasa Interés Anual:'))
cb = float(input('Banco B - Capital Inicial:   '))
rb = float(input('Banco B - Tasa Interés Anual:'))

# PROCEDIMIENTO
anio = 0
sa = ca
sb = cb

while (sa<=sb):
    anio = anio + 1
    sa   = ca*((1+ra)**anio)
    sb   = cb*((1+rb)**anio)

# SALIDA
print('años transcurridos: ', anio)

Resultado del algoritmo

Banco A - Capital Inicial:   100
Banco A - Tasa Interés Anual:0.065
Banco B - Capital Inicial:   120
Banco B - Tasa Interés Anual:0.055
años transcurridos:  20
>>> 
Banco A - Capital Inicial:   100
Banco A - Tasa Interés Anual:0.067
Banco B - Capital Inicial:   120
Banco B - Tasa Interés Anual:0.055
años transcurridos:  17
>>> 

Diagrama de Flujo Mientras-Repita

Ahorros de Juan vs Pedro 01

Diagrama de Flujo Repita-Hasta

Ahorros de Juan vs Pedro 02

ejercicios resueltos Python 1eva_it2011_t1 pdf

ejercicios resueltos Matlab 1eva_it2011_t1 pdf

 

s1Eva_IIT2010_T3 Juego del amigo secreto

Ejercicio: 1Eva_IIT2010_T3 Juego del amigo secreto

Propuesta de solución en Python: py_pdf, tambien en matlab: m_pdf

Inicie el sorteo con banderas de amigo/amiga en cero,

AmigA = np.zeros(n+1,dtype=int)
AmigO = np.zeros(2*n+1,dtype=int)

para poner luego el valor sorteado a cada uno, si aún no se ha repetido.

dama = int(rnd.random()*n)+(n+1)

El valor repetido se verifica revisando el estado del arreglo en la posición correspondiente, esperando que sea vacio AmigO[dama]==0, solo allí se asigna el amigo y se pasa al siguiente sorteo.

# sortea dama para cada AmigO
i = 1
while (i<=n):
    dama = int(rnd.random()*n)+(n+1)
    if (AmigO[dama]==0):
        AmigO[dama] = i
        i = i+1

ser repite el mismo proceso para el otro género.


Instrucciones en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2010_T3 Juego del amigo secreto
# Propuesta de solucion. edelros@espol.edu.ec

import numpy as np
import random as rnd

# INGRESO
n = int(input('¿número de parejas?: '))

# PROCEDIMIENTO
AmigA = np.zeros(n+1,dtype=int)
AmigO = np.zeros(2*n+1,dtype=int)

# sortea dama para cada AmigO
i = 1
while (i<=n):
    dama = int(rnd.random()*n)+(n+1)
    if (AmigO[dama]==0):
        AmigO[dama] = i
        i = i+1

# sortea caballero para cada AmigA
j = n+1
while (j<=(2*n)):
    caballero = int(rnd.random()*n)+1
    if (AmigA[caballero]==0):
        AmigA[caballero] = j
        j = j+1

# SALIDA
print('pareja de caballeros')
i = 1
while (i<=n):
    print(i,' , ',AmigA[i])
    i = i+1
    
print('pareja de damas')
j = n+1
while (j<=(2*n)):
    print(j,' , ',AmigO[j])
    j = j+1

Resultado del algoritmo

¿número de parejas?: 4
pareja de caballeros
1  ,  5
2  ,  8
3  ,  7
4  ,  6
pareja de damas
5  ,  3
6  ,  4
7  ,  1
8  ,  2
>>> 

Diagrama de Flujo

ejercicios resueltos Python 1eva_iit2010_t3 pdf

ejercicios resueltos Matlab 1eva_iit2010_t3 pdf

s1Eva_IIT2010_T2 Venta de pasajes tren turístico

Ejercicio: 1Eva_IIT2010_T2 Venta de pasajes tren turístico

Solución propuesta:  py_pdf, versión matlab m_pdf

Inicialmente desarrolle la venta para un solo pedido/comprador, así encontrará las partes principales de la venta y hace el primer esquema del procedimiento a seguir.

pedido = int(input('¿cuántos pasajes?: '))
print('   Monedas: 1.Dolar 2.Euro 3.Peso')
moneda = int(input(' ¿Tipo Moneda?: '))
cantidad = float(input(' ¿Cantidad de Dinero?: '))

if (moneda==1):
    valor = cantidad*pesodolar
if (moneda==2):
    valor = cantidad*pesoeuro
if (moneda==3):
    valor = cantidad

pago=pedido*precio

En una segunda versión, agregue las demás opciones de control, tales como contadores y acumuladores para controlarlos turnos o la venta de asientos del tren.

En este proceso se añade un lazo para repetir, y se termina mostrando los resultados de boletos vendidos, el dinero cobrado y el total devuelto.

Tarea: Prestar atención en la venta cuando quedan pocos boletos y el usuario quiere comprar más de los que están disponibles

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2010_T1 Venta de pasajes tren turístico
# Propuesta: edelros@espol.edu.ec

turnomax = int(input('¿cuántos turnos?: '))
capacidad = int(input('capacidad del tren?: ')) 

pesodolar = 2.50
pesoeuro  = 3.25
precio    = 7.00
vendido   = 0
cobrado   = 0.00
devuelto  = 0.00

turno = 1
while (turno<=turnomax and vendido<=capacidad):
    print('Turno:')
    print(turno)
    pedido = int(input('¿cuántos pasajes?: '))
    print('   Monedas: 1.Dolar 2.Euro 3.Peso')
    moneda = int(input(' ¿Tipo Moneda?: '))
    cantidad = float(input(' ¿Cantidad de Dinero?: '))

    if (moneda==1):
        valor = cantidad*pesodolar
    if (moneda==2):
        valor = cantidad*pesoeuro
    if (moneda==3):
        valor = cantidad

    pago=pedido*precio
    if (pago<=valor and((vendido+pedido)<capacidad)):
        vendido = vendido+pedido
        cobrado = cobrado+pago
        cambio  = valor-pago
        devuelto = devuelto+cambio

        print('Se vendieron Boletos: ')
        print(pedido)
        print('su cambio: ')
        print(cambio)
    else:
        print('no es dinero suficiente')

    turno = turno + 1

# SALIDA
print('pasajes vendidos: ')
print(vendido)
print('pesos cobrados: ')
print(cobrado)
print('pesos devueltos: ')
print(devuelto)

Resultado del algoritmo

¿cuántos turnos?: 3
capacidad del tren?: 50
Turno:
1
¿cuántos pasajes?: 3
   Monedas: 1.Dolar 2.Euro 3.Peso
 ¿Tipo Moneda?: 1
 ¿Cantidad de Dinero?: 20
Se vendieron Boletos: 
3
su cambio: 
29.0
Turno:
2
¿cuántos pasajes?: 4
   Monedas: 1.Dolar 2.Euro 3.Peso
 ¿Tipo Moneda?: 2
 ¿Cantidad de Dinero?: 20
Se vendieron Boletos: 
4
su cambio: 
37.0
Turno:
3
¿cuántos pasajes?: 2
   Monedas: 1.Dolar 2.Euro 3.Peso
 ¿Tipo Moneda?: 3
 ¿Cantidad de Dinero?: 30
Se vendieron Boletos: 
2
su cambio: 
16.0
pasajes vendidos: 
9
pesos cobrados: 
63.0
pesos devueltos: 
82.0
>>> 

Diagrama de Flujo

Venta de pasajes tren turístico 01

 

Venta de pasajes tren turístico 02

 

Venta de pasajes tren turístico 03

ejercicios resueltos Python 1eva_iit2010_t2 pdf ejercicios resueltos Matlab 1eva_iit2010_t2 pdf

s1Eva_IIT2010_T1 Censo de instrucción por género

Ejercicio: 1Eva_IIT2010_T1 Censo de instrucción por género

Propuesta de solución en Python: py_pdf, también en matlab: m_pdf

Los datos se almacenan en vectores y se los tabula/cuenta en una matriz.  Las filas representan la instrucción y columna el género.

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

Se usará desde la casilla 1, por lo que el tamaño del arreglo es n+1 al no usar la casilla cero.

n = int(input('¿Cuántos formularios: '))

genero = np.zeros(n+1,dtype=int)
instruccion = np.zeros(n+1,dtype=int)
i = 1
while not(i>n):
    print('Formulario:',i)
    genero[i] = int(input('  genero: '))
    instruccion[i] = int(input('  instruccion: '))
    i = i+1

Se inicializan los contadores al inicializar la matriz para luego procesar los datos de todos los formularios registrados.

Instrucción por género:
Masculino Femenino
Primaria
Secundaria
Superior

Para facilitar la lectura del algoritmo se usan como variables f y c para referenciar las filas y columnas. Una forma más larga de solución podría usar contadores individuales para contar primaria/masculino, primaria/femenino, etc.

Tarea: validar el ingreso de género e instrucción por cada formulario

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IIT2010_T1 Censo de instrucción por género
# propuesta: edelros@espol.edu.ec

import numpy as np

#INGRESO
n = int(input('¿Cuántos formularios: '))

genero = np.zeros(n+1,dtype=int)
instruccion = np.zeros(n+1,dtype=int)

i = 1
while not(i>n):
    print('Formulario:',i)
    genero[i] = int(input('  genero: '))
    instruccion[i] = int(input('  instruccion: '))
    i = i+1

# PROCEDIMIENTO
tabla = np.zeros(shape=(3+1,2+1),dtype=int)
i = 1
while not(i>n):
    f = instruccion[i]
    c = genero[i]
    tabla[f,c] = tabla[f,c]+1
    i = i + 1

# SALIDA
print('Instr  M  F ')
f = 1
while not(f>3):
    c = 1
    cadena = ''
    while not(c>2):
        cadena = cadena+' '+str(tabla[f,c])
        c = c + 1
    print('   '+str(f)+': '+cadena)
    f = f + 1

Resultado del algoritmo

¿Cuántos formularios: 5
Formulario: 1
  genero: 1
  instruccion: 2
Formulario: 2
  genero: 1
  instruccion: 2
Formulario: 3
  genero: 2
  instruccion: 1
Formulario: 4
  genero: 2
  instruccion: 1
Formulario: 5
  genero: 2
  instruccion: 3
Instr  M  F 
   1:  0 2
   2:  2 0
   3:  0 1
>>> 

Diagrama Flujo Mientras-Repita

Diagrama de Flujo 1eva_iit2010_t1 01Diagrama de Flujo 1eva_iit2010_t1 02

ejercicios resueltos Python 1eva_iit2010_t1 pdf

ejercicios resueltos Matlab 1eva_iit2010_t1 pdf

s1Eva_IT2010_T2 Número Omirp

Ejercicio: 1Eva_IT2010_T2 Número Omirp

Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf

Nota: Omirp se lee de derecha a izquierda como primo.Número OMIRP

Repasar algoritmo de validación de números primos, también el algoritmo para invertir dígitos de un número. En este ejercicio es necesario usar ambos.

Primero para verificar si el número a verificar es primo, luego para invertir sus dígitos y finalmente verificar si el número con dígitos invertidos también es primo.

Si ambos son primos entonces el número es omirp.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2010_T2 Número Omirp
# Propuesta: edelros@espol.edu.ec

# INGRESO
n = int(input('numero a validar omirp: '))

# PROCEDIMIENTO

# revisa si es primo
esprimo = 1
i = 2
while (i<n):
    r = n%i
    if r==0:
        esprimo = 0
    i = i+1

# invierte los dígitos del número
m = n
alreves = 0
while (m>0):
    r = m%10
    m = m//10
    alreves = alreves*10 + r

# revisa si alreves es primo
esprimoA = 1
i = 2
while (i<alreves):
    r = alreves%i
    if r==0:
        esprimoA = 0
    i = i + 1

# revisa si es omirp
if (esprimo==1 and esprimoA==1):
    omirp = 1
else:
    omirp = 0

# SALIDA
print('es número omirp: ', omirp)

Resultado del algoritmo

numero a validar omirp: 1597
es número omirp:  1
>>> 
numero a validar omirp: 1598
es número omirp:  0
>>> 

Diagrama de Flujo

Número Omirp 01

Número Omirp 02

Número Omirp 03

ejercicios resueltos Python 1eva_it2010_t2 pdf

ejercicios resueltos Matlab 1eva_it2010_t2 pdf

s1Eva_IT2010_T1 Bono para televisores en Uruguay

Ejercicio: 1Eva_IT2010_T1 Bono para televisores en Uruguay

Propuesta de solución en Python:

Para el bloque de ingreso de piden la cantidad de modelos, con lo que se puede crear la matriz con columnas cantidad y precio. Se usa una tercera columna para calcular el valor a devolver por cada modelo.

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

Se suman los valores a devolver para presentar el resultado.

>>> 
¿cuántos modelos?: 3
modelo num: 0
cantidad:250
precio: 400
modelo num: 1
cantidad:120
precio: 1000
modelo num: 2
cantidad:80
precio: 3000
[[   250    400  50000      0]
 [   120   1000  60000      0]
 [    80   3000 120000      0]]
total a devolver:  230000
>>>

Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1Eva_IT2010_T1 Bono para televisores en Uruguay
# Tarea: convertir a listas
# Tarea: ingresar los nombres de los modelos

import numpy as np

# INGRESO
n = int(input('¿cuántos modelos?: '))

tabla  = np.zeros(shape=(n,3), dtype=int)
modelo = 0
while (modelo<n):
    print('modelo num:',modelo)
    tabla[modelo,0] = int(input('cantidad:' ))
    tabla[modelo,1] = int(input('precio: ' ))
    modelo = modelo + 1

# PROCEDIMIENTO
devolver = 0
modelo   = 0
while (modelo<n):
    tabla[modelo,2] = tabla[modelo,0]*tabla[modelo,1]/2
    devolver = devolver+tabla[modelo,2]
    modelo = modelo + 1

# SALIDA
print(tabla)
print('total a devolver: ',devolver)