| 查看: 414 | 回复: 2 | ||
[求助]
调试错误
|
|
蛋疼的数据结构,我们明明是数学系的,结果还要做数据结构的课程设计,我们只学了二十几节课好不好,数据结构编程不会呀!老师要求还好严苛,要求这个星期五要做完,只好在网上下了一篇,然后自己再改了改,已经改了一个星期了,况且我们还有好几门考试呢,不坑能把所有的时间都放置在这上面。可是这一篇总是有错误,调试的时候总是调试不成功,那位大神帮帮忙给改改呗!我只有34金币,全部给你了。 题目是停车场管理系统。利用站和队列实现的! #include #include #include #include #define Size 3 /*车库容量*/ #define Price 5 /*单位价格*/ #define Null 0 typedef struct time { int hour; int minute; }Time; typedef struct { int car_number; Time arrivetime,leavetime; /*车信息结点*/ float fee; }car_info; typedef struct { car_info *north; car_info *south; /*停车场信息*/ int number; }car_park; typedef struct { car_info *west; car_info *east; /*倒车场信息*/ int number; }car_park_back; typedef struct car { car_info *data; struct car *next; /*结点信息*/ }carnode; typedef struct node { carnode *head; carnode *rear; /*便道信息*/ int number; }car_park_temp; void init_car_park(car_park *cp) { cp->north=(car_info *)malloc(Size * sizeof(car_info)); /*初始化停车场*/ if(!cp->north) printf("error\n" ;cp->south=cp->north; /*令栈顶等于栈底*/ cp->number=0; } void enter_car_park(car_park *cp,car_info *car) { *cp->south++=*car; /*车辆进入停车场*/ cp->number++; } int notfull_car_park(car_park *cp) { int e; if(cp->south-cp->north>=Size) /*判断停车场是否已满*/ e=0; else e=1; return(e); } int notempty_car_park_back(car_park_back *cpb) { int e; if(cpb->east==cpb->west) e=0; /*判断倒车场是否不空*/ else e=1; return(e); } void back_car_park(car_park *cp,car_info *car) { *car=*cp->south; /*进行倒车操作*/ cp->number--; } void init_car_park_back(car_park_back *cpb) { cpb->west=(car_info *)malloc(Size *sizeof(car_info)); if(!cpb->west) printf("error\n" ; /*倒车场初始化*/cpb->east=cpb->west; cpb->number=0; } void enter_car_park_back(car_park_back *cpb,car_info *car) { *cpb->east++=*car; cpb->number++; /*进入倒车场操作*/ } void leave_car_park_back(car_park_back *cpb,car_info *car) { *car=*--cpb->east; cpb->number--; /*离开倒车场操作*/ } void init_car_park_temp(car_park_temp *cpt) { cpt->head=cpt->rear=(carnode *)malloc(sizeof(carnode)); /*初始化便道*/ cpt->head->next=Null; cpt->number=0; } void enter_car_park_temp(car_park_temp *cpt,car_info *car) { carnode *p; p=(carnode *)malloc(sizeof(carnode)); /*进入便道操作*/ p->data=car; p->next=Null; cpt->rear->next=p; cpt->rear=p; cpt->number++; } void leave_car_park_temp(car_park_temp *cpt,car_info *car,car_park *cp) { carnode *h; h=(carnode *)malloc(sizeof(carnode)); h=cpt->head->next; car=h->data; /*离开便道操作*/ cpt->head->next=h->next; enter_car_park(cp,car); cpt->number--; } int notempty_car_park_temp(car_park_temp *cpt) { int e; if(cpt->head==cpt->rear) /*判断便道是否为空*/ e=0; else e=1; return(e); } void leave_car_park(car_park *cp,car_info *car,car_park_back *cpb) { float e,a1,a2,b1,b2,t; /*定义时间变量*/ car_info *car1,*car2; car1=(car_info *)malloc(sizeof(car_info)); /*车辆实体化*/ car2=(car_info *)malloc(sizeof(car_info)); while((--cp->south)->car_number!=car->car_number) /*判断车号是否为要出去的车号*/ { back_car_park(cp,car1); /*进行倒车操作*/ enter_car_park_back(cpb,car1); /*进入倒车场*/ } car->arrivetime.hour=cp->south->arrivetime.hour; car->arrivetime.minute=cp->south->arrivetime.minute; a1=car->arrivetime.hour; a2=car->arrivetime.minute; b1=car->leavetime.hour; b2=car->leavetime.minute; t=((b1-a1)+(b2-a2)/60); car->fee=t*Price; /*计算价格*/ printf("the time of the car is %2.1f hour ,%2.1f minute",(b1-a1),(b2-a2)); printf("the money is %3.1f yuan",car->fee); e=notempty_car_park_back(cpb); /*判断倒车场是否为空*/ while(e==1) { leave_car_park_back(cpb,car2); /*离开倒车场*/ enter_car_park(cp,car2); /* 进入停车场*/ e=notempty_car_park_back(cpb); /*判断倒车场是否为空*/ } cp->number--; } void main() /*主函数*/ { char ch; int e,n,i; /*定义字符和整形变量*/ car_park_back *cpb; /* 定义停车场,倒车场以及便道的变量*/ car_park *cp; car_park_temp *cpt,*cpt2; car_info *car; cp=(car_park *)malloc(sizeof(car_park)); /*实体化变量*/ cpb=(car_park_back *)malloc(sizeof(car_park)); cpt=(car_park_temp *)malloc(sizeof(car_park_temp)); cpt2=(car_park_temp *)malloc(sizeof(car_park_temp)); init_car_park(cp); /*实体化停车场,倒车场,便道*/ init_car_park_back(cpb); init_car_park_temp(cpt); printf("\nA=车辆到达 L=车辆离开 X=车场信息\n" ;car=(car_info *)malloc(sizeof(car_info)); do { printf("input the 'A' or 'L' or 'X' :" ; /*输入待操作的命令*/scanf("%s",&ch); e=notfull_car_park(cp); /*判断车场是否为空*/ switch(ch) /*判断要输入的命令*/ { case 'A': if(e==1) /*车场不满,进入车辆*/ { printf("input the car_number:" ; /*输入车辆的基本信息*/scanf("%s",&car->car_number); printf("input the arrivetime:" ;scanf("%d",&(*car).arrivetime.hour); scanf("%d",&(*car).arrivetime.minute); enter_car_park(cp,car); /*进入车场*/ printf("the car is in the car_park,the place is %d\n",cp->number); } else /*若车场满,进入便道*/ { enter_car_park_temp(cpt,car); printf("input the car_number:" ;scanf("%c",&car->car_number); printf("the car is in the car_park_temp,the place of temp is %d\n",cpt->number); } break; case 'L': /*离开停车场*/ printf("input the car_number:" ; /*输入要离开车辆的号码以及离开时间*/scanf("%s",&car->car_number); printf("input the leavetime of the car:" ;scanf("%d",&(*car).leavetime.hour); scanf("%d",&(*car).leavetime.minute); leave_car_park(cp,car,cpb); /*执行离开车场*/ i=(*car).leavetime.hour; /*令便道里车辆进入车场的时间和车场里面的车离开的时间相等*/ n=notempty_car_park_temp(cpt); /*判断便道是否不空*/ if(n==1) printf("The car %s",cpt->head->next->data->car_number); /*记住便道里第一辆车的号码*/ leave_car_park_temp(cpt,car,cp); /*离开便道,进入停车场*/ printf(" is enter the car_park,arrivetime is %d ,the place of carpark is %d\n",i,cp->number); break; case 'X': /*查看车场以及便道里的车辆信息*/ printf("\nThere are %d cars in car park!\nFolowing is the carnumber in the car park:\n ",cp->number); for(i=1;i<=cp->number;i++) /*做循环,依次输出停车场里车辆的信息*/ printf("%s,",(cp->north++)->car_number); cp->north=cp->north-cp->number; cpt2->head=cpt->head->next; /*设一个虚拟指针使其指向头结点的下一个位置*/ if(cpt->number==0) /*便道里没有车的情况*/ printf("\nThere is no cars in temp!" ;else { printf("There are %d cars in car temp!\n Folowing is the carnumber in the car temp:\n ",cpt->number); for(i=1;i<=cpt->number;i++) /*做一个循环,输出便道里车辆的信息*/ { printf("%d ",cpt2->head->next->data->car_number); /* 输出车辆的号码*/ cpt2->head=cpt2->head->next; } } break; default: printf("ERROR please input again\n" ;break; } } while(ch!='0'); } |
» 猜你喜欢
导师想让我从独立一作变成了共一第一
已经有9人回复
博士读完未来一定会好吗
已经有23人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有11人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
申请2026年博士
已经有6人回复
岚雾
木虫 (正式写手)
- 应助: 15 (小学生)
- 金币: 1710.7
- 散金: 7
- 帖子: 365
- 在线: 177.2小时
- 虫号: 1298397
- 注册: 2011-05-17
- 性别: GG
- 专业: 计算数学与科学工程计算
【答案】应助回帖
★
感谢参与,应助指数 +1
xzhdty(金币+1): 欢迎常来程序语言看看 2011-12-19 19:59:29
jjdg:编辑内容 2011-12-20 01:54
jjdg:编辑内容 2011-12-20 01:55
jjdg:编辑内容 2011-12-20 01:55
jjdg:编辑内容 2011-12-20 01:56
jjdg:编辑内容 2011-12-20 01:57
jjdg:编辑内容 2011-12-20 01:58
jjdg:编辑内容 2011-12-20 01:59
永远的答案(金币+1): 没有帮助, 2011-12-22 12:28:02
感谢参与,应助指数 +1
xzhdty(金币+1): 欢迎常来程序语言看看 2011-12-19 19:59:29
jjdg:编辑内容 2011-12-20 01:54
jjdg:编辑内容 2011-12-20 01:55
jjdg:编辑内容 2011-12-20 01:55
jjdg:编辑内容 2011-12-20 01:56
jjdg:编辑内容 2011-12-20 01:57
jjdg:编辑内容 2011-12-20 01:58
jjdg:编辑内容 2011-12-20 01:59
永远的答案(金币+1): 没有帮助, 2011-12-22 12:28:02
|
#include #include #include #include #define Size 3 /*车库容量*/ #define Price 5 /*单位价格*/ #define Null 0 typedef struct time { int hour; int minute; }Time; typedef struct { int car_number; Time arrivetime,leavetime; /*车信息结点*/ float fee; }car_info; typedef struct { car_info *north; car_info *south; /*停车场信息*/ int number; }car_park; typedef struct { car_info *west; car_info *east; /*倒车场信息*/ int number; }car_park_back; typedef struct car { car_info *data; struct car *next; /*结点信息*/ }carnode; typedef struct node { carnode *head; carnode *rear; /*便道信息*/ int number; }car_park_temp; void init_car_park(car_park *cp) { cp->north=(car_info *)malloc(Size * sizeof(car_info)) ; /*初始化停车场*/ if(!cp->north) printf("error\n" ) ; cp->south=cp->north; /*令栈顶等于栈底*/ cp->number=0; } void enter_car_park(car_park *cp,car_info *car) { *cp->south++=*car; /*车辆进入停车场*/ cp->number++; } int notfull_car_park(car_park *cp) { int e; if(cp->south-cp->north>=Size) /*判断停车场是否已满*/ e=0; else e=1; return(e); } int notempty_car_park_back(car_park_back *cpb) { int e; if(cpb->east==cpb->west) e=0; /*判断倒车场是否不空*/ else e=1; return(e); } void back_car_park(car_park *cp,car_info *car) { *car=*cp->south; /*进行倒车操作*/ cp->number--; } void init_car_park_back(car_park_back *cpb) { cpb->west=(car_info *)malloc(Size *sizeof(car_info)); if(!cpb->west) printf("error\n" ) ; /*倒车场初始化*/ cpb->east=cpb->west; cpb->number=0; } void enter_car_park_back(car_park_back *cpb,car_info *car) { *cpb->east++=*car; cpb->number++; /*进入倒车场操作*/ } void leave_car_park_back(car_park_back *cpb,car_info *car) { *car=*--cpb->east; cpb->number--; /*离开倒车场操作*/ } void init_car_park_temp(car_park_temp *cpt) { cpt->head=cpt->rear=(carnode *)malloc(sizeof(carnode)) ; /*初始化便道*/ cpt->head->next=Null; cpt->number=0; } void enter_car_park_temp(car_park_temp *cpt,car_info *car) { carnode *p; p=(carnode *)malloc(sizeof(carnode)) ; /*进入便道操作*/ p->data=car; p->next=Null; cpt->rear->next=p; cpt->rear=p; cpt->number++; } void leave_car_park_temp(car_park_temp *cpt,car_info *car,car_park *cp) { carnode *h; h=(carnode *)malloc(sizeof(carnode)) ; h=cpt->head->next; car=h->data; /*离开便道操作*/ cpt->head->next=h->next; enter_car_park(cp,car); cpt->number--; } int notempty_car_park_temp(car_park_temp *cpt) { int e; if(cpt->head==cpt->rear) /*判断便道是否为空*/ e=0; else e=1; return(e); } void leave_car_park(car_park *cp,car_info *car,car_park_back *cpb) { float e,a1,a2,b1,b2,t; /*定义时间变量*/ car_info *car1,*car2; car1=(car_info *)malloc(sizeof(car_info)); /*车辆实体化*/ car2=(car_info *)malloc(sizeof(car_info)); while((--cp->south)->car_number!=car->car_number) /*判断车号是否为要出去的车号*/ { back_car_park(cp,car1); /*进行倒车操作*/ enter_car_park_back(cpb,car1); /*进入倒车场*/ } car->arrivetime.hour=cp->south->arrivetime.hour; car->arrivetime.minute=cp->south->arrivetime.minute; a1=car->arrivetime.hour; a2=car->arrivetime.minute; b1=car->leavetime.hour; b2=car->leavetime.minute; t=((b1-a1)+(b2-a2)/60); car->fee=t*Price; /*计算价格*/ printf("the time of the car is %2.1f hour ,%2.1f minute",(b1-a1),(b2-a2)); printf("the money is %3.1f yuan",car->fee); e=notempty_car_park_back(cpb); /*判断倒车场是否为空*/ while(e==1) { leave_car_park_back(cpb,car2); /*离开倒车场*/ enter_car_park(cp,car2); /* 进入停车场*/ e=notempty_car_park_back(cpb); /*判断倒车场是否为空*/ } cp->number--; } void main() /*主函数*/ { char ch; int e,n,i; /*定义字符和整形变量*/ car_park_back *cpb; /* 定义停车场,倒车场以及便道的变量*/ car_park *cp; car_park_temp *cpt,*cpt2; car_info *car; cp=(car_park *)malloc(sizeof(car_park)); /*实体化变量*/ cpb=(car_park_back *)malloc(sizeof(car_park)); cpt=(car_park_temp *)malloc(sizeof(car_park_temp)); cpt2=(car_park_temp *)malloc(sizeof(car_park_temp)); init_car_park(cp); /*实体化停车场,倒车场,便道*/ init_car_park_back(cpb); init_car_park_temp(cpt); printf("\nA=车辆到达 L=车辆离开 X=车场信息\n" ); car=(car_info *)malloc(sizeof(car_info)); do { printf("input the 'A' or 'L' or 'X' :" ); /*输入待操作的命令*/ scanf("%s",&ch); e=notfull_car_park(cp); /*判断车场是否为空*/ switch(ch) /*判断要输入的命令*/ { case 'A': if(e==1) /*车场不满,进入车辆*/ { printf("input the car_number:" ); /*输入车辆的基本信息*/ scanf("%s",&car->car_number); printf("input the arrivetime:" ); scanf("%d",&(*car).arrivetime.hour); scanf("%d",&(*car).arrivetime.minute); enter_car_park(cp,car); /*进入车场*/ printf("the car is in the car_park,the place is %d\n",cp->number); } else /*若车场满,进入便道*/ { enter_car_park_temp(cpt,car); printf("input the car_number:" ); scanf("%c",&car->car_number); printf("the car is in the car_park_temp,the place of temp is %d\n",cpt->number); } break; case 'L': /*离开停车场*/ printf("input the car_number:" ); /*输入要离开车辆的号码以及离开时间*/ scanf("%s",&car->car_number); printf("input the leavetime of the car:" ); scanf("%d",&(*car).leavetime.hour); scanf("%d",&(*car).leavetime.minute); leave_car_park(cp,car,cpb); /*执行离开车场*/ i=(*car).leavetime.hour; /*令便道里车辆进入车场的时间和车场里面的车离开的时间相等*/ n=notempty_car_park_temp(cpt); /*判断便道是否不空*/ if(n==1) printf("The car %s",cpt->head->next->data->car_number); /*记住便道里第一辆车的号码*/ leave_car_park_temp(cpt,car,cp); /*离开便道,进入停车场*/ printf(" is enter the car_park,arrivetime is %d ,the place of carpark is %d\n",i,cp->number); break; case 'X': /*查看车场以及便道里的车辆信息*/ printf("\nThere are %d cars in car park!\nFolowing is the carnumber in the car park:\n ",cp->number); for(i=1;i<=cp->number;i++) /*做循环,依次输出停车场里车辆的信息*/ printf("%s,",(cp->north++)->car_number); cp->north=cp->north-cp->number; cpt2->head=cpt->head->next; /*设一个虚拟指针使其指向头结点的下一个位置*/ if(cpt->number==0) /*便道里没有车的情况*/ printf("\nThere is no cars in temp!" ); else { printf("There are %d cars in car temp!\n Folowing is the carnumber in the car temp:\n ",cpt->number ) ; for(i=1;i<=cpt->number;i++) /*做一个循环,输出便道里车辆的信息*/ { printf("%d ",cpt2->head->next->data->car_number ) ; /* 输出车辆的号码*/ cpt2->head=cpt2->head->next; } } break; default: printf("ERROR please input again\n" ) ; break; } } while(ch!='0'); } 没有什么问题,数学专业最好也学下程序设计方面,以后找工作应该很有用处的,我也是数学专业的. [ Last edited by jjdg on 2011-12-20 at 01:59 ] |
2楼2011-12-19 18:01:30
3楼2011-12-20 10:30:02













;
回复此楼