Autor Tema: Que le puedo mejorar a este Algoritmo  (Leído 173 veces)

Reijs Manas

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Que le puedo mejorar a este Algoritmo
« en: 15 de Septiembre 2021, 15:30 »
La aerolínea Montpellier quiere lanzar al mercado un programa de fidelización para sus clientes. Este otorgará una cantidad de millas por pagos, en establecimientos abiertos al público, realizadas con tarjetas de crédito de las 2 franquicias más conocidas en el mundo y quiere contratar con usted un sistema de información que permita simular las millas dadas por una compra realizada en un comercio de acuerdo con la siguiente tabla:

 

Franquicia Tarjeta          Millas por Euro pagado

Visa                                    15

Mastercard                        10

Tabla 1

 

Además, este sistema debe permitir al cliente adquirir millas. El costo de las millas está dado con base a la siguiente tabla

 

Franquicia Tarjeta               Valor de cada milla en Euros

Visa                                                1

Mastercard                                    3

Tabla 2

 

Realice un algoritmo que le permita al usuario conocer la cantidad de millas que le generará una compra y que le permita al usuario conocer el valor que debe pagar por una cantidad de millas determinadas usando una de las franquicias



 

NOTAS

·        Si el cliente está comprando millas y las paga con una tarjeta de crédito, el programa de fidelización otorgará millas extras de acuerdo con la tabla 1.

·        El cliente puede realizar sus pagos con tarjeta de crédito.

·        Las millas solo pueden comprarse con tarjeta de crédito

 
Código: [Seleccionar]
import java.util.Scanner; public class Main { public static void main(String[] args) { String lCompra; Double vCompra; Double millas; String mPago; double nMillas; Double vPagar = 0.0; Scanner read = new Scanner(System.in); System.out.print("Ingrese el producto que va a comprar -producto-millas "); lCompra = read.next(); switch (lCompra.toLowerCase()) { case "producto": System.out.print("Ingrese el valor de la compra "); vCompra = read.nextDouble(); System.out.print("ingrese medio de pago -visa-master "); mPago = read.next(); switch (mPago.toLowerCase()) { case "visa": millas = vCompra * 15; break; case "master": millas = vCompra * 10; break; default: millas = 0.0; } System.out.println("La cantidad de millas que obtuvo por su compra es " + millas); return; case "millas": System.out.print("Ingrese el # de millas que desea comprar "); nMillas = read.nextDouble(); System.out.println("ingrese medio de pago -visa-master "); mPago = read.next(); switch (mPago.toLowerCase()) { case "visa": vPagar = nMillas * 1; millas = vPagar * 15; break; case "master": vPagar = nMillas * 3; millas = vPagar * 10.0 * 3.0; break; default: millas = 0.0; } System.out.print("La valor a pagar por las " + millas + " millas que compro es de" + vPagar); return; } } }
« Última modificación: 15 de Septiembre 2021, 15:33 por Reijs Manas »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 702
    • Ver Perfil
Re: Que le puedo mejorar a este Algoritmo
« Respuesta #1 en: 16 de Septiembre 2021, 17:42 »
Yo lo que cambiaría sería lo de anidar switchs dentro de otros. Es difícil de leer y en ocasiones Java puede equivocarse y relacionar un case con el switch equivocado.

Además como la primera disyuntiva solo tiene dos posibilidades: producto o millas, esta la habría hecho con un if else.
Ya luego dentro del if si habría usado switch para evaluar los medios de pago.
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

Reijs Manas

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 8
    • Ver Perfil
Re: Que le puedo mejorar a este Algoritmo
« Respuesta #2 en: 16 de Septiembre 2021, 21:01 »
Ok gracias..!

Me podrías dar un ejemplo de cómo lo usarías

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 702
    • Ver Perfil
Re: Que le puedo mejorar a este Algoritmo
« Respuesta #3 en: 17 de Septiembre 2021, 17:24 »
La idea es evaluar el tipo de compra con un if, ya que solo hay dos posibilidades: productos o millas
Dentro de cada posibilidad, ya sí se piden los demás datos y se evalúa con switch, si se desea.
Así se evita anidar un switch dentro de otro.

Algo como:

Código: [Seleccionar]
if (lCompra.equals("producto")) {
    //Código para gestionar venta de productos
    //Pedir importe, medio de pago, evaluar con switch, etc..
}
else {
    //Código para gestionar venta de millas
    //Pedir importe, medio pago, evaluar con switch...
    //Como para millas solo hay dos medio de pago posibles,
    //también se podría evaluar con if else.
}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".