Algoritmo en C con acción

Iniciado por Javaniano, 19 Noviembre 2013, 14:10 PM

0 Miembros y 1 Visitante están viendo este tema.

Javaniano

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

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language