Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define maxsize 1000
  4.  
  5. struct queue{              //构造队列结构
  6.     int front;
  7.     int rear;
  8.     int a[maxsize];
  9. };
  10.  
  11. void newqueue(queue*p){    //建空队
  12.     p->front=-1;
  13.     p->rear=0;
  14. }
  15.  
  16. void inqueue(int i,queue*p){    //入队函数
  17.     if(p->front==(p->rear+1)%maxsize)  //判断队列是否满
  18.     {
  19.         printf("full\n");
  20.         exit(0);
  21.     }
  22.     p->a[p->rear]=i;
  23.     p->rear=(p->rear+1)%maxsize;
  24. }
  25.  
  26. int outqueue(queue*p){          //出队函数
  27.     if(p->front==(p->rear-1)%maxsize)   //判断队列是否空
  28.     {
  29.         printf("error\n");
  30.         exit(0);
  31.     }  
  32.     p->front=(p->front+1)%maxsize;
  33.     return p->a[p->front];
  34. }
  35.  
  36. double average(queue*p){     //计算平均值
  37.     int sum=0;
  38.     int n=abs(p->front-p->rear)-1;
  39.     while(p->front!=(p->rear-1)%maxsize)
  40.         sum=sum+outqueue(p);
  41.     return sum*1.0/n;
  42. }
  43.  
  44. int main(){
  45.     int f,i,k;
  46.     char c;
  47.  
  48.     queue*p1=(queue*)malloc(sizeof(queue));  //构造q1,q2,q3队列
  49.     queue*p2=(queue*)malloc(sizeof(queue));
  50.     queue*p3=(queue*)malloc(sizeof(queue));
  51.     newqueue(p1);newqueue(p2);newqueue(p3);
  52.  
  53.     scanf("%d",&f);                          //读取客户信息
  54.     for(i=0;i<f;i++)
  55.     {
  56.         getchar();
  57.         scanf("%c%d",&c,&k);
  58.         if(c=='A')
  59.             inqueue(k,p1);
  60.         else if(c=='B')
  61.             inqueue(k,p2);
  62.         else if(c=='C')
  63.             inqueue(k,p3);
  64.         else
  65.             printf("wrong client\n");
  66.     }
  67.  
  68.     if(p1->front==p1->rear-1)                    //输出结果
  69.         printf("no A kind client\n");            //空队情况
  70.     else
  71.         printf("%.2f\n",average(p1));
  72.     if(p2->front==p2->rear-1)
  73.         printf("no B kind client\n");
  74.     else
  75.         printf("%.2f\n",average(p2));
  76.     if(p3->front==p3->rear-1)
  77.         printf("no C kind client\n");
  78.     else
  79.         printf("%.2f\n",average(p3));
  80.  
  81.     free(p1);                                   //释放空间
  82.     free(p2);
  83.     free(p3);
  84.  
  85.     return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement