Un supermercado que hace reparto a domicilio dispone de una secuencia de datos para llevar el control de los pedidos . Cada pedido tiene una secuencia con el siguiente formato:
< idProd1 quantity1 price1 fridge1 idProd2 quantity2 price2 fridge2 . .. idProdn quantityn prices fridgen END > , donde:
• idProdi es un entero positivo de 5 dígitos que representa el código del producto
• Price es un real que indica el precio del producto
• Cantidad es un entero positivo que representa el número de elementos de este producto
• fridgen es un carácter con el valor 'S' si este producto necesita nevera, 'N' contrario
• END es la marca final de secuencia y vale -1
Nos dicen que cada código de producto aparecerá sólo una vez en la secuencia y que una secuencia contendrá , como mínimo , la marca final .
Partiendo de una secuencia con los datos de un pedido que entrarán por el canal estándar , se nos pide que diseñamos una acción que calcule el precio final del pedido sabiendo que :
• El precio del reparto depende del precio final del pedido : Si el precio total es menor a 70 euros el reparto tiene un coste adicional de 6 euros , sino si el precio total es mayor o igual a 70 euros y menor a 120 euros el coste del reparto es de 4 euros . En caso de que el precio sea superior a 120 euros , el reparto es gratuito .
• Algunos productos tienen una oferta especial : comprando dos , el segundo tiene un 50 % de descuento . Estos productos están señalados mediante el identificador de producto : si empieza con el dígito 9 .
Se debe imprimir por pantalla el precio final del pedido ( con los descuentos y el coste de reparto incluidos) , el coste del reparto y el total de descuentos obtenidos .
Lo del precio lo hago:
si (subtotal<70) llavors
rep = 6.0;
fsi
si (subtotal>=70 i <120) llavors
rep = 4.0;
sino
rep=0.0;
fsi
¿cómo haríais lo del descuento?
GRACIAS
Para conocer si el numero (id del producto) termina en 9 puedes utilizar el operador de modulo.
El calculo del descuento depende de si este aplica solo al segundo o por pares.
* Si aplica solo al segundo verificas si el numero de unidades es mayor o igual a dos, si eso sucede al costo total le restas ".5 * precio_unitario".
* Si aplica por pares (por ejemplo compras cinco artículos con el descuento aplicando a dos de ellos) debes utilizar:
descuento = (cantidad / 2) * .5 * precio_unitario
Donde "cantidad / 2" es una división entera (los decimales se descartan).
Un saludo