Advertisement
Guest User

zan_nabil

a guest
May 21st, 2018
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.61 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int siz;
  5. double stack_c[100000];
  6. char que[1000];
  7. void push(double cost)
  8. {
  9.     siz++;
  10.     stack_c[siz] = cost;
  11.     return;
  12.  
  13. }
  14. double pop()
  15. {
  16.     double q = stack_c[siz];
  17.     siz--;
  18.     return q;
  19.  
  20. }
  21. void init()
  22. {
  23.     siz = 0;
  24. }
  25.  
  26. int main()
  27. {
  28.     init();
  29.     printf("sale format: s 12/34/18 2.30 pm 120 1.67\n");
  30.     printf("receipt format: r 12/34/18 2.30 pm 120 1.67\n");
  31.     printf("-1 for exit\n");
  32.  
  33.     while(1)
  34.     {
  35.         gets(que);
  36.         //printf("%s\n",que);
  37.         if(que[0]=='-' && que[1]=='1')
  38.         {
  39.             break;
  40.         }
  41.         else if(que[0]=='r')
  42.         {
  43.             //printf("receipt taken\n");
  44.             int len = strlen(que);
  45.             int typ = 0; // 1 for integer -1 for decimal
  46.             int dotpos = len;
  47.             for(int i=len-1; i>=0; i--)
  48.             {
  49.                 if(que[i]=='.')
  50.                 {
  51.                     typ = -1;
  52.                     dotpos = i;
  53.                     break;
  54.                 }
  55.                 if(que[i]==' ')
  56.                 {
  57.                     typ = 1;
  58.                     break;
  59.                 }
  60.             }
  61.  
  62.             double po = 1;
  63.             double num = 0;
  64.             int gappos = len-1;
  65.             for(int i=dotpos-1; i>=0; i--)
  66.             {
  67.                 if(que[i]==' ')
  68.                 {
  69.                     gappos = i;
  70.                     break;
  71.                 }
  72.                 num += ((int)(que[i]-'0'))*po;
  73.                 po*=10;
  74.             }
  75.  
  76.             if(typ==-1)
  77.             {
  78.                 po = 0.1;
  79.                 for(int i=dotpos+1; i<=len-1; i++)
  80.                 {
  81.                     num += ((int)(que[i]-'0'))*po;
  82.                     po/=10;
  83.                 }
  84.             }
  85.  
  86.  
  87.             int num2 = 0;
  88.             int po2 = 1;
  89.  
  90.             for(int i=gappos-1; i>=0; i--)
  91.             {
  92.                 if(que[i]==' ')
  93.                 {
  94.                     //gappos = i;
  95.                     break;
  96.                 }
  97.                 num2 += ((int)(que[i]-'0'))*po2;
  98.                 po2*=10;
  99.             }
  100.  
  101.             printf("receipt taken %d items at %f per item\n",num2,num);
  102.  
  103.             for(int i=1; i<=num2; i++)
  104.             {
  105.                 push(num);
  106.             }
  107.             printf("Current items: %d\n",siz);
  108.  
  109.         }
  110.         else if(que[0]=='s')
  111.         {
  112.             int po = 1;
  113.             int num = 0;
  114.             int len = strlen(que);
  115.             for(int i=len-1; i>=0; i--)
  116.             {
  117.                 if(que[i]==' ')
  118.                 {
  119.                     break;
  120.                 }
  121.                 num += ((int)(que[i]-'0'))*po;
  122.                 po*=10;
  123.             }
  124.             double last_p;
  125.             int siz2 = 0;
  126.             int sizc = siz;
  127.             if(siz!=0)
  128.             {
  129.                 //siz2++;
  130.                 last_p = stack_c[siz];
  131.             }
  132.  
  133.             siz--;
  134.  
  135.             int cnt = 1;
  136.  
  137.             while(siz>0 && cnt<num)
  138.             {
  139.                 double price = stack_c[siz];
  140.                 if(fabs(price-last_p)>0.1)
  141.                 {
  142.                     printf("%d SCREWDRIVERS SOLD AT RM %f\n",cnt,last_p);
  143.                     cnt = 1;
  144.                     last_p = price;
  145.                     siz--;
  146.                 }
  147.                 else
  148.                 {
  149.                     cnt++;
  150.                     siz--;
  151.  
  152.                 }
  153.  
  154.  
  155.  
  156.             }
  157.  
  158.             printf("%d SCREWDRIVERS SOLD AT RM %f\n",cnt,last_p);
  159.  
  160.  
  161.  
  162.  
  163.  
  164.             printf("sale done\n");
  165.         }
  166.  
  167.  
  168.  
  169.     }
  170.  
  171.  
  172.  
  173.     return 0;
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement