Advertisement
Guest User

C

a guest
Oct 29th, 2014
312
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5.  
  6.  
  7.  
  8.  
  9. #define ENDSEQ -1
  10. #define PROMO_NONE 'N'
  11. #define PROMO_3x2  'T'
  12. #define PROMO_2x1  'D'
  13. #define PROMO_HALF 'M'
  14. #define PROMO_LOYALTY 0.95
  15.  
  16.  
  17.  
  18.  
  19. float computeNoPromoPrice (float price, int qtt, float VAT)
  20. {
  21.     return price * (float) qtt * VAT;
  22. }
  23.  
  24. float computeNxMPromoPrice (int N, int M, float price, int qtt, float VAT){
  25.    
  26.    
  27.     float promo, noPromo;
  28.    
  29.     promo = (float) qtt / N * (float) M * price * VAT;
  30.     noPromo = (float)(qtt % N) * price * VAT;
  31.    
  32.     return promo + noPromo;
  33. }
  34.  
  35. float computeHalfPromoPrice (float price, int qtt, float VAT){
  36.    
  37.     float promo, noPromo;
  38.    
  39.     noPromo = (float) qtt / 2 + (float) (qtt % 2) * price * VAT;
  40.     promo = (float) qtt / 2 * price * 0.5 * VAT;
  41.    
  42.     return promo + noPromo;
  43. }
  44.  
  45. /*Declaracio de accions*/
  46.  
  47. void addToAmount (float *amount, float price, int qtt, char promo, float VAT){
  48.    
  49.     float productPrice;
  50.    
  51.     productPrice = 0.0;
  52.    
  53.     if (promo == PROMO_NONE){
  54.         productPrice = computeNoPromoPrice(price, qtt, VAT);
  55.     }else{
  56.         if(promo == PROMO_3x2){
  57.             productPrice = computeNxMPromoPrice(3, 2, price, qtt, VAT);
  58.         }else{
  59.             if(promo == PROMO_2x1){
  60.                 productPrice = computeNxMPromoPrice(2, 1, price, qtt, VAT);
  61.             }else{
  62.                 productPrice = computeHalfPromoPrice (price, qtt, VAT);
  63.             }
  64.         }
  65.     }
  66.    
  67.     *amount = &amount + productPrice;
  68. }
  69.  
  70.  
  71. int main()
  72. {
  73.    
  74.     bool loyaltyCard;
  75.     int code, qtt, percent;
  76.     char promo, card, blank;
  77.     float price, VAT, amount;
  78.    
  79.     amount = 0.0;
  80.     scanf("%c", &card);
  81.     loyaltyCard = card = 'S';
  82.     scanf("%c", &blank);
  83.     scanf("%d", &code);
  84.    
  85.     while( code != ENDSEQ ){
  86.         scanf("%f", &price);
  87.         scanf("%d", &qtt);
  88.         scanf("%c", &blank);
  89.         scanf("%c", &promo);
  90.         scanf("%c", &blank);
  91.         scanf("%d", &percent);
  92.        
  93.         VAT = 1.0 + (float) percent / 100.0;
  94.         addToAmount (&amount,price,qtt,promo,VAT);
  95.         scanf("%d", &code);
  96.     }
  97.    
  98.     if (loyaltyCard) {
  99.         amount = amount * PROMO_LOYALTY;
  100.     }
  101.    
  102.     printf("%.2f", amount);
  103.    
  104.     return 0;
  105.     system ("PAUSE");
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement