lunes, 14 de diciembre de 2020

Solución al problema de las multas mediante un Algoritmo

 PROBLEMA PRINCIPAL

En la Secretaría de Tránsito de la ciudad requieren de un ingeniero en formación como usted para que diseñe un algoritmo que permita registrar los datos de cada una de las multas por infracciones de tránsito que han sido generadas. Existe actualmente cuatro tipos infracciones a saber:

• Tipo A: Sancionado con multa equivalente a cuatro (4) salarios mínimos legales diarios vigentes, es decir, $117.040

• Tipo B: Sancionado con multa equivalente a ocho (8) salarios mínimos legales diarios vigentes, es decir, $234.080

• Tipo C: Sancionado con multa equivalente a quince (15) salarios mínimos legales diarios vigentes, es decir, $438.900

• Tipo D: Sancionado con multa equivalente a treinta (30) salarios mínimos legales diarios vigentes, es decir, $877.800

El algoritmo principal (o proceso) deberá leer la cantidad de multas a registrar, y, posteriormente, por cada multa la cédula del infractor y el tipo de multa, y deberá imprimir el valor que debe pagar. Así mismo, deberá acumular la cantidad de multas por cada tipo de infracción existente.

De otra parte, una vez se han registrado todas las multas, es necesario que el algoritmo calcule los siguientes resultados haciendo uso de llamado a funciones:

• El valor total en pesos que la Secretaría de Tránsito va a percibir por todas las multas registradas. 

• El tipo de infracción más cometida. En caso de igualdad se mostrará la primera encontrada.


DESARROLLO DE LA SOLUCIÓN

Estrategia: Resolver un problema grande y dificil dividiendolo en varios problemas más pequeños y más sencillos. A cada solución de un problema pequeño se va integrando una nueva solución.

Problema 1: Leer la cantidad de multas a registrar y luego, procesarlas una a una.

Problema 2: Por cada multa, capturar la cédula del infractor y el tipo de multa

Problema 3: Por cada multa, Calcular lo que debe pagar de acuerdo a al tipo de multa 

Problema 4: Por cada multa, imprimir el valor que debe pagar.

Problema 5: Calcular y mostrar al final El valor total en pesos que la Secretaría de Tránsito va a percibir por todas las multas registradas.

Problema 6: Contar la cantidad de multas por cada tipo de infracción existente. 

Problema 7: Calcular al final El tipo de infracción más cometida. En caso de igualdad se mostrará la primera encontrada.


Solución al problema 1:

Problema 1: Leer la cantidad de multas a registrar y luego, procesarlas una a una.

Método: Uso de un Para para hacer un Ciclo.


Algoritmo multas

Escribir "Indica la cantidad de multas a procesar: "

Leer cantidad_multas 

para i<- 1 hasta cantidad_multas Con Paso 1 Hacer

FinPara

FinAlgoritmo


Solucion a los problemas 1 y 2:

Problema 2: Por cada multa, capturar la cédula del infractor y el tipo de multa

Método: Uso de Escribir y Leer


Algoritmo multas

Escribir "Indica la cantidad de multas a procesar: "

Leer cantidad_multas

para i<- 1 hasta cantidad_multas 

Escribir "Diga la cedula del infractor: "

Leer cedula

Escribir "Diga el tipo de infracción "

Leer tipo

FinPara

FinAlgoritmo


Solucion a los problemas 1, 2 y 3:

Problema 3: Por cada multa, Calcular lo que debe pagar de acuerdo a al tipo de multa.

Método: Uso de preguntas (SI) anidadas.


Algoritmo multas

Escribir "Indica la cantidad de multas a procesar: "

Leer cantidad_multas

Para i <- 1 Hasta cantidad_multas Con Paso 1 Hacer

Escribir "Diga la cedula del infractor: "

Leer cedula

Escribir "Diga el tipo de infracción "

Leer tipo

valor = 0

Si tipo = "A" Entonces

valor = 117040

SiNo

Si tipo = "B" Entonces

valor = 234080

SiNo

Si tipo = "C" Entonces

valor = 438900

SiNo

Si tipo = "D" Entonces

valor = 877800

Fin Si

Fin Si

Fin Si

Fin Si

Fin Para

FinAlgoritmo


Solución a los problemas 1, 2, 3 y 4:

Problema 4: Por cada multa, imprimir el valor que debe pagar.

Método: Uso de Escribir para mostrar texto y variables.


Algoritmo multas

Escribir "Indica la cantidad de multas a procesar: "

Leer cantidad_multas

Para i <- 1 Hasta cantidad_multas Con Paso 1 Hacer

Escribir "Diga la cedula del infractor: "

Leer cedula

Escribir "Diga el tipo de infracción "

Leer tipo

valor = 0

Si tipo = "A" Entonces

valor = 117040

SiNo

Si tipo = "B" Entonces

valor = 234080

SiNo

Si tipo = "C" Entonces

valor = 438900

SiNo

Si tipo = "D" Entonces

valor = 877800

Fin Si

Fin Si

Fin Si

Fin Si

Escribir "El usuario con cedula ", cedula , " debe pagar por valor de multa: $",valor

Fin Para

FinAlgoritmo


Solución a los problemas 1, 2, 3, 4 y 5:

Problema 5: Calcular y mostrar al final El valor total en pesos que la Secretaría de Tránsito va a percibir por todas las multas registradas.

Método: Uso de la variable acumuladora Total.

Algoritmo multas

Escribir "Indica la cantidad de multas a procesar: "

Leer cantidad_multas

        Total = 0

Para i <- 1 Hasta cantidad_multas Con Paso 1 Hacer

Escribir "Diga la cedula del infractor: "

Leer cedula

Escribir "Diga el tipo de infracción "

Leer tipo

valor = 0

Si tipo = "A" Entonces

valor = 117040

SiNo

Si tipo = "B" Entonces

valor = 234080

SiNo

Si tipo = "C" Entonces

valor = 438900

SiNo

Si tipo = "D" Entonces

valor = 877800

Fin Si

Fin Si

Fin Si

Fin Si

Total = Total + valor

Escribir "El usuario con cedula ", cedula , " debe pagar por valor de multa: $",valor

Fin Para

Escribir "El valor total que se recibe por todas las multas es: $", Total

FinAlgoritmo


Solución a los problemas 1, 2, 3, 4, 5 y 6:

Problema 6: Contar la cantidad de multas por cada tipo de infracción existente. 

Método: Uso de variables contadoras.


Algoritmo multas

Escribir "Indica la cantidad de multas a procesar: "

Leer cantidad_multas

Total = 0

cant_A = 0

cant_B = 0

cant_C = 0

cant_D = 0

Para i <- 1 Hasta cantidad_multas Con Paso 1 Hacer

Escribir "Diga la cedula del infractor: "

Leer cedula

Escribir "Diga el tipo de infracción "

Leer tipo

valor = 0

Si tipo = "A" Entonces

valor = 117040

cant_A = cant_A +1

SiNo

Si tipo = "B" Entonces

valor = 234080

cant_B = cant_B +1

SiNo

Si tipo = "C" Entonces

valor = 438900

cant_C = cant_C +1

SiNo

Si tipo = "D" Entonces

valor = 877800

cant_D = cant_D +1

Fin Si

Fin Si

Fin Si

Fin Si

Total = Total + valor

Escribir "El usuario con cedula ", cedula , " debe pagar por valor de multa: $",valor

Fin Para

Escribir "El valor total de las multas es: $", Total

FinAlgoritmo


Solución a los problemas 1, 2, 3, 4, 5, 6  y 7:

Problema 7: Calcular al final El tipo de infracción más cometida. En caso de igualdad se mostrará la primera encontrada.

Método: Subdividir este problema en dos:

Problema 7.1 : Averiguar si hay cantidades iguales.

Problema 7.2 : Si no hay cantidades iguales, calcular el valor más alto.


Solución a los problemas 1, 2, 3, 4, 5, 6 y 7.1

Método: Uso de preguntas anidadas y operadores booleanos.


Algoritmo multas

Escribir "Indica la cantidad de multas a procesar: "

Leer cantidad_multas

Total = 0

cant_A = 0

cant_B = 0

cant_C = 0

cant_D = 0

Para i <- 1 Hasta cantidad_multas Con Paso 1 Hacer

Escribir "Diga la cedula del infractor: "

Leer cedula

Escribir "Diga el tipo de infracción "

Leer tipo

valor = 0

Si tipo = "A" Entonces

valor = 117040

cant_A = cant_A +1

SiNo

Si tipo = "B" Entonces

valor = 234080

cant_B = cant_B +1

SiNo

Si tipo = "C" Entonces

valor = 438900

cant_C = cant_C +1

SiNo

Si tipo = "D" Entonces

valor = 877800

cant_D = cant_D +1

Fin Si

Fin Si

Fin Si

Fin Si

Total = Total + valor

Escribir "El usuario con cedula ", cedula , " debe pagar por valor de multa: $",valor

Fin Para

Escribir "El valor total de las multas es: $", Total

Si cant_A = cant_B O cant_A = cant_C O cant_A = cant_D Entonces

Escribir "El tipo de multa más cometida es la A (con Iguales)"

Si cant_B = cant_C O cant_B = cant_D Entonces

Escribir "El tipo de multa más cometida es la B (Con iguales)"

Si cant_C = cant_D Entonces

Escribir "El tipo de multa más cometida es la C (Con iguales)"

SiNo


Fin Si

Fin Si

Fin Si

FinAlgoritmo


Solución a los problemas 1, 2, 3, 4, 5, 6 , 7.1, 7.2 y, por consiguiente, a todo el problema principal:
Método: Uso de preguntas anidadas y operadores booleanos.

Algoritmo multas
Escribir "Indica la cantidad de multas a procesar: "
Leer cantidad_multas
Total = 0
cant_A = 0
cant_B = 0
cant_C = 0
cant_D = 0
Para i <- 1 Hasta cantidad_multas Con Paso 1 Hacer
Escribir "Diga la cedula del infractor: "
Leer cedula
Escribir "Diga el tipo de infracción "
Leer tipo
valor = 0
Si tipo = "A" Entonces
valor = 117040
cant_A = cant_A +1
SiNo
Si tipo = "B" Entonces
valor = 234080
cant_B = cant_B +1
SiNo
Si tipo = "C" Entonces
valor = 438900
cant_C = cant_C +1
SiNo
Si tipo = "D" Entonces
valor = 877800
cant_D = cant_D +1
Fin Si
Fin Si
Fin Si
Fin Si
Total = Total + valor
Escribir "El usuario con cedula ", cedula , " debe pagar por valor de multa: $",valor
Fin Para
Escribir "El valor total de las multas es: $", Total
Si cant_A = cant_B O cant_A = cant_C O cant_A = cant_D Entonces
Escribir "El tipo de multa más cometida es la A (Hay otras cantidades iguales)"
Si cant_B = cant_C O cant_B = cant_D Entonces
Escribir "El tipo de multa más cometida es la B (Hay otras cantidades iguales)"
Si cant_C = cant_D Entonces
Escribir "El tipo de multa más cometida es la C (Hay otras cantidades iguales)"
SiNo
Si cant_A > cant_B Y cant_A > cant_C Y cant_A > cant_D Entonces
Escribir "El tipo de multa más cometida es la A"
SiNo
Si cant_B > cant_C Y cant_B > cant_D Entonces
Escribir "El tipo de multa más cometida es la B"
SiNo
Si cant_C > cant_D Entonces
Escribir "El tipo de multa más cometida es la C"
SiNo
Escribir "El tipo de multa más cometida es la D"
Fin Si
Fin Si
Fin Si
Fin Si
Fin Si
Fin Si
FinAlgoritmo


No hay comentarios.:

Publicar un comentario