elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda soy nuevo en esto me podrian ayudar nc como comenzar este problema
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda soy nuevo en esto me podrian ayudar nc como comenzar este problema  (Leído 4,364 veces)
estebanxdx

Desconectado Desconectado

Mensajes: 2


Ver Perfil
ayuda soy nuevo en esto me podrian ayudar nc como comenzar este problema
« en: 23 Noviembre 2017, 04:35 am »

Promoción con descuento desarrollo en C 
El supermercado Pitón Market ha lanzado una promoción para todos sus clientes que posean la tarjeta Raw Input. La promoción consiste en aplicar un descuento por cada n productos que pasan por caja.
El primer descuento es de 20%, y se aplica sobre los primeros n productos ingresados. Luego, cada descuento es la mitad del anterior, y es aplicado sobre los siguientes n productos.
Por ejemplo, si n = 3 y la compra es de 11 productos, entonces los tres primeros tienen 20% de descuento, los tres siguientes 10%, los tres siguientes 5%, y los dos últimos no tienen descuento.
Escriba un programa que pida al usuario ingresar n y la cantidad de productos, y luego los precios de cada producto. Al final, el programa debe entregar el precio total, el descuento total y el precio final después de aplicar el descuento.
Si al aplicar el descuento el precio queda con decimales, redondee el valor hacia abajo.
n: 3
Cantidad productos: 8
Precio producto 1: 400
Precio producto 2: 800
Precio producto 3: 500
Precio producto 4: 100
Precio producto 5: 400
Precio producto 6: 300
Precio producto 7: 200
Precio producto 8: 500
Total: 3200
Descuento: 420
Por pagar: 2780


En línea

estebanxdx

Desconectado Desconectado

Mensajes: 2


Ver Perfil
intente modificando un programa que habia realizado ante pero no llege a nd
« Respuesta #1 en: 23 Noviembre 2017, 04:40 am »

#include<stdio.h>
#include<math.h>
main()
{
printf("\n El programa calcula el descuento de la compra de un cliente");
printf("\n El descuento es deacuerdo al monto de la compra");

float Compra, Descuento, Resultado;

printf("Ingrese el monto de la compra");
scanf("%f",&Compra);

if (Compra100)
{
Resultado = Compra;
printf("\n El monto de su compra es de: %7.2f", Resultado);
printf("\n Su compra no aplica para descuento");
}
else
{
if ((Compra>=100)&&(Compra<=200))
{
Descuento = Compra * 0.05;
Resultado = Descuento - Compra;
printf("\n El monto de su compra es de: %7.2f",Resultado);
printf("\n Su ahorro es de Q. %7.2f",Descuento);
}
else
{
if ((Compra>=300)&&(Compra<=400))
{
Descuento = Compra * 0.11;
Resultado = Descuento - Compra;
printf("\n El monto de su compra es de: %7.2f",Resultado);
printf("\n Su ahorro es de Q. %7.2f",Descuento);
}
else
{
if ((Compra>=500)&&(Compra<=800));
{
Descuento = Compra * 0.18;
Resultado = Descuento - Compra;
printf("\n El monto de su compra es de: %7.2f",Resultado);
printf("\n Su ahorro es de Q. %7.2f",Descuento);
}
{
while (Compra>800)
{
Descuento = Compra * 0.25;
Resultado = Descuento - Compra;
printf("\n El monto de su compra es de: %7.2f",Resultado);
printf("\n Su ahorro es de Q. %7.2f",Descuento);
}
}
}
}
}



return 0;

}


En línea

dijsktra

Desconectado Desconectado

Mensajes: 110


Mr Edsger Dijsktra (Tribute to)


Ver Perfil
Re: ayuda soy nuevo en esto me podrian ayudar nc como comenzar este problema
« Respuesta #2 en: 6 Febrero 2018, 15:00 pm »

Un problema bonito, si señor...7 variables! 3 entrada, 2 de salida, y dos locales...

La clave está en como formalizamos en aritmética, que "si tengo 5 productos" y me exigen lotes de 3 para aplicar el descuento, el 4 o el 5 no tienen descuento. Eso es lo que hace con el chorizo :xD de

Código:
\chi((i+(pck-1)-i%pck))<N)
Si voy por el 5 producto (i=4), con lotes de 3  (pck=3) entonces 4+(3-1)-(4%3) = 6 -1 >= 5=N , o sea, "se sale del array"...

Por otro lado, hay que ir actualizando el descuento cada "pack" unidades a la mitad, de ahi que multipliquemos por 2 a disc cada "pack" veces en el cuerpo del for.



Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. /*
  5.  
  6.   let \chi(true)=1 \chi(false)=0
  7.  
  8.   P : V[0..N) of nat  0<pck
  9.   Q : T = \sum i : 0 <= i < N : V[i]
  10.       D = \sum i : 0 <= i < N  : \chi((i+(pck-1)-i%pck))<N)*V[i]/(5*2^(i/pck)) *
  11.  
  12.       * Informaly,
  13.          chunk \chi(...) expresses condition
  14.          for applying discount 0 or 1
  15.  
  16.    I  : Q[N/n] and 0 <= n <= N and
  17.         disc = (5*2^n)  (efficiency reasons.)
  18.    B  : n < N
  19.    C(N-n) = N-n >= 0
  20.  
  21. */
  22.  
  23. void discount(const int V[], const int N, const int pck,
  24.              int &T, int &D)
  25. {
  26.  int n,disc;
  27.  for(n=T=D=0, disc=5;n<N;n++)
  28.    {
  29.      T += V[n];
  30.      D += ((n+(pck-1)-(n%pck))<N)*V[n]/disc;
  31.      disc *=((n+1)%pck)?1:2;
  32.    }
  33.  return;
  34. }
  35.  
  36. #define MAX 1000
  37. int main()
  38. {
  39.  int V[MAX] ;
  40.  int n,N ;
  41.  int pck;
  42.  int T,D;
  43.  cin >> pck;
  44.  cin >> N;
  45.  for(int n=0; n<N; n++) cin >> V[n];
  46.  discount(V,N,pck,T,D);
  47.  cout << T << " " << D << " " << (T-D) << endl;
  48.  return 0;
  49. }

El ejemplo reproducido que se daba
Código:
3
8
400 800 500 100 400 300 200 500

Da como salida

Código:
3200 420 2780

Si en cambio, decidimos que hay que tener un minimo de 9 productos para aplicar el descuento...

Código:
9
8
400 800 500 100 400 300 200 500

Entonces, no hay descuento, como era de esperar

Código:
3200 0 3200

« Última modificación: 6 Febrero 2018, 15:28 pm por dijsktra » En línea

Si la depuración es el proceso de eliminar fallos en el software, entonces programar debe ser el proceso de ponerlos dentro. (Edsger Dijsktra)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines