Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #define maxsize 1000
- struct queue{ //构造队列结构
- int front;
- int rear;
- int a[maxsize];
- };
- void newqueue(queue*p){ //建空队
- p->front=-1;
- p->rear=0;
- }
- void inqueue(int i,queue*p){ //入队函数
- if(p->front==(p->rear+1)%maxsize) //判断队列是否满
- {
- printf("full\n");
- exit(0);
- }
- p->a[p->rear]=i;
- p->rear=(p->rear+1)%maxsize;
- }
- int outqueue(queue*p){ //出队函数
- if(p->front==(p->rear-1)%maxsize) //判断队列是否空
- {
- printf("error\n");
- exit(0);
- }
- p->front=(p->front+1)%maxsize;
- return p->a[p->front];
- }
- double average(queue*p){ //计算平均值
- int sum=0;
- int n=abs(p->front-p->rear)-1;
- while(p->front!=(p->rear-1)%maxsize)
- sum=sum+outqueue(p);
- return sum*1.0/n;
- }
- int main(){
- int f,i,k;
- char c;
- queue*p1=(queue*)malloc(sizeof(queue)); //构造q1,q2,q3队列
- queue*p2=(queue*)malloc(sizeof(queue));
- queue*p3=(queue*)malloc(sizeof(queue));
- newqueue(p1);newqueue(p2);newqueue(p3);
- scanf("%d",&f); //读取客户信息
- for(i=0;i<f;i++)
- {
- getchar();
- scanf("%c%d",&c,&k);
- if(c=='A')
- inqueue(k,p1);
- else if(c=='B')
- inqueue(k,p2);
- else if(c=='C')
- inqueue(k,p3);
- else
- printf("wrong client\n");
- }
- if(p1->front==p1->rear-1) //输出结果
- printf("no A kind client\n"); //空队情况
- else
- printf("%.2f\n",average(p1));
- if(p2->front==p2->rear-1)
- printf("no B kind client\n");
- else
- printf("%.2f\n",average(p2));
- if(p3->front==p3->rear-1)
- printf("no C kind client\n");
- else
- printf("%.2f\n",average(p3));
- free(p1); //释放空间
- free(p2);
- free(p3);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement