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)
whilenot(diferencia<=precision):
cociente1 = cociente2
a = b
b = c
c = a+b
cociente2 = a/b
diferencia = abs(cociente2-cociente1)
# SALIDAprint('cociente:', cociente2)
print('con diferencia de: ', diferencia)
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
whilenot(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 colorcolor = 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.
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 1Eva_IIT2002_T2 Color de placas de vehículos# propuesta: edelros@espol.edu.ecimport numpy
# INGRESO
n = int(input('cuántos autos: '))
placa = numpy.zeros(n+1,dtype=int)
auto = 1
whilenot(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
whilenot(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
# SALIDAprint('Autos por cada color:')
k = 1
whilenot(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.
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.
# 1Eva_IIT2002_T1a Tablas de multiplicar# Ejemplo de un menu# las opciones se proponen por caracteres# menu
opcion = '0'whilenot(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ú')
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
whilenot(cociente<=0):
numcopia = cociente
cociente = numcopia//10
residuo = numcopia%10
invertido = invertido*10 + residuo
# revisa si el número es igual a invertidoif (invertido == numero):
palindromo = 1
else:
palindromo = 0
# SALIDAprint('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
>>>