# 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)
# SALIDAprint('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
>>>
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
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 1Eva_IIT2010_T3 Juego del amigo secreto# Propuesta de solucion. edelros@espol.edu.ecimport 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
# SALIDAprint('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
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.
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
whilenot(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.ecimport 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
whilenot(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
whilenot(i>n):
f = instruccion[i]
c = genero[i]
tabla[f,c] = tabla[f,c]+1
i = i + 1
# SALIDAprint('Instr M F ')
f = 1
whilenot(f>3):
c = 1
cadena = ''whilenot(c>2):
cadena = cadena+' '+str(tabla[f,c])
c = c + 1
print(' '+str(f)+': '+cadena)
f = f + 1
# 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 omirpif (esprimo==1 and esprimoA==1):
omirp = 1
else:
omirp = 0
# SALIDAprint('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
>>>
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.
La primera solución se presenta usando el lazo “Mientras-Repita”
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 1Eva_IT2009_T1 Suma de serie con signo alternado# Propuesta de solución. edelros@espol.edu.ec# INGRESO
n = int(input('¿Cuántos términos?: '))
# PROCEDIMIENTO
i = 1
s = 0
signo = 1
while (i<=n):
s = s + signo*(1/i)
i = i + 1
signo = (-1)*signo
# SALIDAprint(s)
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 1Eva_IT2009_T1 Suma de serie con signo alternado# Propuesta de solución. edelros@espol.edu.ec# INGRESO
n = int(input('¿Cuántos términos?: '))
# PROCEDIMIENTO
i = 1
s = 0
signo = 1
whilenot(i>n):
s = s + signo*(1/i)
i = i + 1
signo = (-1)*signo
# SALIDAprint(s)
[ algoritmo ] [ diagrama flujo ] Se usa el concepto para cambio de base numérica, se extrae cada dígito para acumular el valor ponderando por cada posición referenciada con la variable i.
Si se usa residuo de la división para 10, el primer dígito a extraer es el menos significativo (unidades).
r = octal%10
Se acumulan los valores de acuerdo a la ponderación o peso por posición y se repite hasta que no queden dígitos que ponderar.
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 1Eva_IIT2008_T1 Odometro OCTAL# Propuesta de solución. edelros@espol.edu.ec# Tarea: Validar que el ingreso sea en octal.# INGRESO
octal = int(input('¿numero en octal?: '))
# PROCEDIMIENTO
i = 0
decimal = 0
while (octal>0):
r = octal%10
octal = octal//10
decimal = decimal+r*(8**i)
i = i + 1
# SALIDAprint('valor en decimal: ')
print(decimal)
Resultado del algoritmo
Observación: Tener en cuenta que no se ha validado que el número octal solo debe tener dígitos entre 0 y 7.
¿numero en octal?: 27
valor en decimal:
23
>>>
¿numero en octal?: 14
valor en decimal:
12
>>>
Se ingresa la cantidad de días del mes,
o se puede considerar directamente 30.
También es opcional ingresar el rango de precio mínimo y precio máximo, que son los límites del número aleatorio.
Para la pregunta a) se calcula el promedio como el acumulado de precios de cada día dividido para los n días.
En la pregunta b) se usa el algoritmo del menor, con la hipótesis que el díamenores el primero, y que el precio menor es el máximo posible, a fin que se reemplace con el primer menor encontrado.
Se deja la pregunta c) como tarea a fin de que se desarrolle el problema usando un arreglo.
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 1Eva_IT2008_T3 Simular Precio del Petróleo# Propuesta: edelros@espol.edu.ec# Tarea: Realizar el literal c)import random as rnd
# INGRESO
n = int(input('días del mes: '))
# PROCEDIMIENTO
prcmax = 150
prcmin = 130
rango = prcmax-prcmin+1
diamenor = 1
pmenor = prcmax
dia = 1
total = 0
while (dia<=n):
precio = int(rnd.random()*rango)+prcmin
total = total+precio
if (precio<pmenor):
diamenor = dia
pmenor = precio
dia = dia+1
promedio = total/n
# SALIDAprint('promedio: ')
print(promedio)
print('día de menor precio:')
print(diamenor)
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 1Eva_IT2008_T3 Simular Precio del Petróleo# Tema 3. Precio petroleo-Arreglo# Propuesta: edelros@espol.edu.ecimport random as rnd
import numpy as np
# INGRESO
n = int(input('días del mes: '))
# PROCEDIMIENTO
prcmax = 150
prcmin = 130
rango = prcmax-prcmin+1
precio = np.zeros((n+1),dtype=int)
# algoritmo del promedio
total = 0
dia = 1
while (dia<=n):
precio[dia] = int(rnd.random()*rango)+prcmin
total = total + precio[dia]
dia = dia + 1
promedio = total/n
# algoritmo del menor
diamenor = 1
dia = 1
while (dia<=n):
if precio[dia]<precio[diamenor]:
diamenor = dia
dia = dia + 1
# algoritmo precio superior al promedio
superior = 0
dia = 1
while (dia<=n):
if precio[dia]>promedio:
superior = superior + 1
dia = dia + 1
# SALIDAprint('promedio: ')
print(promedio)
print('día de menor precio:')
print(diamenor)
print('días con precio sobre promedio:')
print(superior)
Resultado del algoritmo
días del mes: 30
promedio:
140.06666666666666
día de menor precio:
14
días con precio sobre promedio:
16
>>>