Ejercicio: 2Eva2014TII_T2 Listar multas infractores metrovía
continuación del tema 1. Propuesta de solución en Python:
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2014_T2 Listar multas infractores metrovía
# Tarea: Calcular el total de multas a recaudar
import numpy as np
def multametrovia(veces,basico):
pagar = 0
i = 1
while not(i>veces):
if (i==1):
pagar = basico + 0.1*basico
if (i>1):
pagar = pagar + 2*basico+0.1*basico
i = i + 1
return(pagar)
# 2Eva_IIT2014_T2 Listar multas infractores metrovía
# usa la funcion anterior
# INGRESO
n = int(input('cuantas infracciones: '))
i = 0
codigo = []
while not(i>=n):
placa = input('codigo: ')
codigo.append(placa)
i = i + 1
# PROCEDIMIENTO
# marcar los únicos
unico = np.ones(n,dtype=int)
i = 0
penultimo = n-1
while not(i>=penultimo):
j = i + 1
while not(j>=n):
if (codigo[i]==codigo[j]):
unico[j] = 0
j = j + 1
i = i + 1
# copiar en nueva lista placas únicas
infractor = []
i = 0
while not(i>=n):
if (unico[i]==1):
infractor.append(codigo[i])
i = i + 1
# contar los repetidos vector veces
m = len(infractor)
veces = np.zeros(m,dtype=int)
i = 0
while not(i>=n):
placa = codigo[i]
# busca en infractores
j = 0
while not(j>=m):
if (placa==infractor[j]):
veces[j] = veces[j] + 1
j = j + 1
i = i + 1
# multas
multas = np.zeros(m,dtype=float)
j = 0
while not(j>=m):
multas[j] = multametrovia(veces[j],354)
j = j + 1
# Tarea: total a recaudar por multas
# SALIDA
print(unico)
print(infractor)
print('La lista de infractores y multas es:')
j = 0
while not(j>=m):
print(infractor[j],multas[j])
j = j + 1
resultado del algoritmo
cuantas infracciones: 4
codigo: 123
codigo: 456
codigo: 1020
codigo: 456
[1 1 1 0]
['123', '456', '1020']
La lista de infractores y multas es:
123 389.4
456 1132.8000000000002
1020 389.4
>>>