Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #define ENDSEQ -1
- #define PROMO_NONE 'N'
- #define PROMO_3x2 'T'
- #define PROMO_2x1 'D'
- #define PROMO_HALF 'M'
- #define PROMO_LOYALTY 0.95
- float computeNoPromoPrice (float price, int qtt, float VAT)
- {
- return price * (float) qtt * VAT;
- }
- float computeNxMPromoPrice (int N, int M, float price, int qtt, float VAT){
- float promo, noPromo;
- promo = (float) qtt / N * (float) M * price * VAT;
- noPromo = (float)(qtt % N) * price * VAT;
- return promo + noPromo;
- }
- float computeHalfPromoPrice (float price, int qtt, float VAT){
- float promo, noPromo;
- noPromo = (float) qtt / 2 + (float) (qtt % 2) * price * VAT;
- promo = (float) qtt / 2 * price * 0.5 * VAT;
- return promo + noPromo;
- }
- /*Declaracio de accions*/
- void addToAmount (float *amount, float price, int qtt, char promo, float VAT){
- float productPrice;
- productPrice = 0.0;
- if (promo == PROMO_NONE){
- productPrice = computeNoPromoPrice(price, qtt, VAT);
- }else{
- if(promo == PROMO_3x2){
- productPrice = computeNxMPromoPrice(3, 2, price, qtt, VAT);
- }else{
- if(promo == PROMO_2x1){
- productPrice = computeNxMPromoPrice(2, 1, price, qtt, VAT);
- }else{
- productPrice = computeHalfPromoPrice (price, qtt, VAT);
- }
- }
- }
- *amount = &amount + productPrice;
- }
- int main()
- {
- bool loyaltyCard;
- int code, qtt, percent;
- char promo, card, blank;
- float price, VAT, amount;
- amount = 0.0;
- scanf("%c", &card);
- loyaltyCard = card = 'S';
- scanf("%c", &blank);
- scanf("%d", &code);
- while( code != ENDSEQ ){
- scanf("%f", &price);
- scanf("%d", &qtt);
- scanf("%c", &blank);
- scanf("%c", &promo);
- scanf("%c", &blank);
- scanf("%d", &percent);
- VAT = 1.0 + (float) percent / 100.0;
- addToAmount (&amount,price,qtt,promo,VAT);
- scanf("%d", &code);
- }
- if (loyaltyCard) {
- amount = amount * PROMO_LOYALTY;
- }
- printf("%.2f", amount);
- return 0;
- system ("PAUSE");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement