69,378
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
//结构体声明
struct customer
{
int ID;
int enterHour;
int enterMinute;
int enterSecond;
char noon[2];
int num;
int age;
};
struct customer1
{
int ID;
int enterTime;
int enterWaitTime;
int enterCountTime;
int leaveTime;
int num;
int age;
int condition;//1代表在等待区;2代表第一次选择;3代表最终选择;4代表结账完成,已离开
bool youxianji;//优先结账
};
//变量声明
customer enterCst[10000],leaveCst[10000];
customer1 Cst[10000],Cst1[10000],leaveCst1[10000];
customer1 SpecialCountCst[15];
customer1 SampleCountCst[15];
customer1 SureCountCst[15];
int SUM;//总人数
int countAreaClearTime;//结账区清空的时间
int leaveCstSum=0;//已离开的人数
int Special;
int Sample;//记录两种人群的人数
void enterSupermarket()//读入文件内容,并进行预处理,调试已完成
{
SUM=0;
customer1 exchange;
FILE* fp;
fp=fopen("G:\\数据结构与算法分析\\supermarket.txt","r");
if(fp == NULL)
return;
for(int i=0;i<10000;i++)
{
fscanf(fp,"%d %d:%d:%d%s %d %d\n",&enterCst[i].ID,&enterCst[i].enterHour,&enterCst[i].enterMinute,&enterCst[i].enterSecond,&enterCst[i].noon,&enterCst[i].num,&enterCst[i].age);
if(enterCst[i].ID != 0)
SUM++;
}
fclose(fp);
for(int i=0;i<SUM;i++)
{
Cst[i].ID = enterCst[i].ID;
Cst[i].age = enterCst[i].age;
if(strcmp("AM",enterCst[i].noon) == 0)
Cst[i].enterTime = enterCst[i].enterHour*3600 + enterCst[i].enterMinute*60 + enterCst[i].enterSecond;
else if(enterCst[i].enterHour >= 1)
Cst[i].enterTime = enterCst[i].enterHour*3600 + enterCst[i].enterMinute*60 + enterCst[i].enterSecond + 12*3600;
else
Cst[i].enterTime = enterCst[i].enterHour*3600 + enterCst[i].enterMinute*60 + enterCst[i].enterSecond;
Cst[i].num = enterCst[i].num;
Cst[i].enterWaitTime = Cst[i].enterTime + Cst[i].num*10;
if(Cst[i].age <= 10 || Cst[i].age >= 60)
Cst[i].youxianji = true;
else
Cst[i].youxianji = false;
Cst[i].condition = 1;
}
for(int i=0;i<SUM;i++)//直接按进入等待区的时间进行排序
{
for(int j=i+1;j<SUM;j++)
{
if(Cst[i].enterWaitTime > Cst[j].enterWaitTime && Cst[j].enterWaitTime != 0)
{
exchange = Cst[i];
Cst[i] = Cst[j];[code=c]