用c语言实现以下应用程序:顾客在随机时间到达,两个人连续到达时间间隔大于0,每个人处理时间大于0,首先:设置已函数使得客户端能够添加到队列中;其次,创建一个函数存在客户端队列,在键盘上输入客户数量,初始化每个客户到达日期和等待时间,假设第一个客户在早上8点到达;最后编写一个显示函数,显示每个客户的到达时间和处理时间

时间: 2024-02-13 16:01:22 浏览: 20
以下是一个C语言程序,实现了顾客排队模拟的功能,包括添加顾客到队列、初始化顾客到达时间和等待时间、显示队列中每个顾客的到达时间和处理时间等: ``` #include <stdio.h> #include <stdlib.h> #include <time.h> #define MAX_CUSTOMERS 100 struct Customer { int arrival_time_hour; int arrival_time_minute; int processing_time; }; struct Queue { struct Customer customers[MAX_CUSTOMERS]; int front; int rear; }; void enqueue(struct Queue *q, struct Customer c); struct Customer dequeue(struct Queue *q); void initialize_queue(struct Queue *q); void get_customer_details(struct Queue *q, int n); void display_queue(struct Queue *q); int main() { struct Queue q; int n; initialize_queue(&q); printf("Enter number of customers: "); scanf("%d", &n); get_customer_details(&q, n); display_queue(&q); return 0; } void enqueue(struct Queue *q, struct Customer c) { if (q->rear == MAX_CUSTOMERS - 1) { printf("Queue is full!\n"); exit(1); } q->rear++; q->customers[q->rear] = c; } struct Customer dequeue(struct Queue *q) { if (q->front == q->rear) { printf("Queue is empty!\n"); exit(1); } q->front++; return q->customers[q->front]; } void initialize_queue(struct Queue *q) { q->front = q->rear = -1; } void get_customer_details(struct Queue *q, int n) { int i; struct Customer c; srand(time(NULL)); c.arrival_time_hour = 8; c.arrival_time_minute = 0; for (i = 0; i < n; i++) { c.arrival_time_minute += rand() % 60; if (c.arrival_time_minute >= 60) { c.arrival_time_hour++; c.arrival_time_minute -= 60; } c.processing_time = (rand() % 10) + 1; enqueue(q, c); } } void display_queue(struct Queue *q) { int i; struct Customer c; printf("Customer\tArrival Time\tProcessing Time\n"); for (i = q->front + 1; i <= q->rear; i++) { c = q->customers[i]; printf("%d\t\t%d:%02d\t\t%d minutes\n", i, c.arrival_time_hour, c.arrival_time_minute, c.processing_time); } } ``` 在上述程序中,定义了一个名为Customer的结构体来表示顾客的到达时间和处理时间,以及一个名为Queue的结构体来表示顾客队列。程序中实现了enqueue和dequeue函数来实现顾客入队和出队的操作,initialize_queue函数用于初始化队列,get_customer_details函数用于生成随机的顾客到达时间和处理时间,并将顾客添加到队列中,display_queue函数用于显示队列中每个顾客的到达时间和处理时间。在主函数中,调用了initialize_queue、get_customer_details和display_queue等函数来完成任务。 需要注意的是,由于顾客到达时间和处理时间是随机生成的,因此每次运行程序的结果可能会不同。

相关推荐

最新推荐

recommend-type

C#实现判断一个时间点是否位于给定时间区间的方法

主要介绍了C#实现判断一个时间点是否位于给定时间区间的方法,涉及C#针对时间的转换与判定相关技巧,需要的朋友可以参考下
recommend-type

socket多人聊天程序C语言版(一)

主要为大家详细介绍了socket多人聊天程序C语言版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

单片机C语言程序设计:用计数器中断实现100以内的按键计数

名称:用计数器中断实现 100 以内的按键计数 说明:本例用 T0 计数器中断实现按键技术,由于计数寄存器初值为 1,因此 P3.4 引脚的每次负跳变都会触发 T0 中断,实现计数值累加。计数器的清零用外部中断 0 控制。
recommend-type

C语言实现随机抽取纸牌

主要为大家详细介绍了C语言实现随机抽取纸牌,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言实现歌手大奖赛计分程序

主要为大家详细介绍了C语言实现歌手大奖赛计分程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解答下列问题:S—>S;T|T;T—>a 构造任意项目集规范族,构造LR(0)分析表,并分析a;a

对于这个文法,我们可以构造以下项目集规范族: I0: S -> .S S -> .T T -> .a I1: S -> S. [$ T -> T. [$ I2: S -> T. I3: S -> S.;S S -> S.;T T -> T.;a 其中,点(.)表示已经被扫描过的符号,;$表示输入串的结束符号。 根据项目集规范族,我们可以构造出LR(0)分析表: 状态 | a | $ ---- | - | - I0 | s3| I1 | |acc I2 | | 其中s3表示移进到状态3,acc表示接受。在分析字符串a;a时,我们可以按照以下步骤进行
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。