| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1150 人关注过本帖
标题:此程序如何运行
只看楼主 加入收藏
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:12 
此程序如何运行
#define OVERFLOW -2
#define OK 1
#define ERROR 0
#define STACK_INIT_SIZE 1
typedef int status ;
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
typedef struct
{int car_num;
 int time;
}car_info;
typedef struct
{
car_info *base;
car_info *top;
status stacksize;
}sqstack;
void Initstack(sqstack *s)
{
s->base=(car_info *)malloc(STACK_INIT_SIZE*sizeof(car_info));
if(!s->base) exit(OVERFLOW);
s->top=s->base;
s->stacksize=0;
}
void push(sqstack *s,car_info e)
{
*s->top++=e;
s->stacksize++;
}
car_info pop(sqstack *s)
{car_info e;
if(s->top==s->base)  
{printf("停车场内没有该车辆!\n");
exit(0) ;}
e=*--s->top;
s->stacksize--;
return e;
}
typedef struct Qnode
{
int car_num;
int time;
struct Qnode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
int lenth;
}LinkQueue;
status InitQueue(LinkQueue *Q)
{
Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));
if(!Q->front)exit(OVERFLOW);
Q->front->next=NULL;
Q->lenth=0;
return OK;
}

void EnQueue(LinkQueue *Q,car_info *a )
{  
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!p)exit(OVERFLOW);
p->car_num=a->car_num;
 p->time=a->time;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
Q->lenth++;

}
QueuePtr DeQueue(LinkQueue *Q)
{ QueuePtr p,e,s={0};
if(Q->front==Q->rear)
{printf("便道上没有车辆!\n"); return s;}
p=Q->front->next;
e=p;
Q->front->next=p->next;
Q->lenth--;
if(Q->rear==p)Q->front=Q->rear;
//free(p);
 return e;
  
}
void arrive(sqstack *s,LinkQueue *p,car_info a,int n)
{


if(s->stacksize<n)
{

push(s,a);
printf("\n车牌号为%d的车辆进入停车场%d号车道\n",a.car_num,s->stacksize);
}
else  
{
 EnQueue(p,&a);
 printf("\n停车场已满,车牌号为%d的车辆停在便道的%d号位置\n",a.car_num,p->lenth);
}
}
void leave(sqstack *tcc,sqstack *dcc,LinkQueue *p,car_info a,float pay)
{
car_info x,ss;
QueuePtr b;
int find=1,arrivetime=0;
float cost=0.0;
while(find)
{

ss=pop(tcc);
push(dcc,ss);
if(ss.car_num==a.car_num)
{
find=0;
cost=(a.time-ss.time)*pay;
arrivetime=ss.time;
}
}
pop(dcc); //把临时堆栈的第一辆车(要离开的)去掉;
while(dcc->stacksize)
{
x=pop(dcc);
push(tcc,x);
}
if(tcc->stacksize<2&&p->lenth!=0)
{
b=DeQueue(p);
x.car_num=b->car_num;
x.time=b->time;
push(tcc,x);
printf("车牌号为%d的车辆由便道进入停车场%d号车道\n",x.car_num,tcc->stacksize);
}
printf("\n**********************************************\n");
printf("|车牌号码|进站时刻|出站时刻|停留时间|停车费用|\n");
printf("|%-6d |%-6d |%-6d |%-6d |%-6.2f |\n",a.car_num,arrivetime,a.time,a.time-arrivetime,cost);
printf("**********************************************\n");
}

void main()
{sqstack tcc,dcc;
LinkQueue p;
car_info a;
int sum=1000,n;
float pay;
char sign;
printf("\n|************************停车场管理**************************|\n");
printf("|******A/a:车辆到达*******D/d:车辆离开******E/e:推出系统*****|\n\n");

Initstack(&tcc);
Initstack(&dcc);
InitQueue(&p);
printf("请先输入停车场的车位总数,收费标准(元/小时):");
scanf("%d%f",&n,&pay);
getchar();
printf("\n请输入A/D/E,车牌号,时刻:");
scanf("%c%d%d",&sign,&a.car_num,&a.time);
getchar();
while(sum)
{
switch(sign)
{
case 'a':
case 'A':arrive(&tcc,&p,a,n);break;
case 'D':
case 'd':leave(&tcc,&dcc,&p,a,pay);break;
case 'e':
case 'E':exit(OVERFLOW);break;
}
printf("\n请输入A/D/E,车牌号,时刻:");
scanf("%c%d%d",&sign,&a.car_num,&a.time);
getchar();
sum--;
}
getch();
}
这个程序怎么运行
搜索更多相关主题的帖子: void include status 
2010-12-28 18:35
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:3 
typedef struct
{
    int car_num;
    int time;
}car_info;

typedef struct
{
    car_info *base;
    car_info *top;
    status stacksize;
}sqstack;

/*初始化栈*/
void Initstack(sqstack *s)
{
    s->base=(car_info *)malloc(STACK_INIT_SIZE*sizeof(car_info));

    if(!s->base)
    {
        exit(OVERFLOW);
    }
    s->top=s->base;
    s->stacksize=0;
}
/*进栈*/
void push(sqstack *s,car_info e)
{
    *s->top++=e;
    s->stacksize++;
}
/*出栈 并返回出栈信息*/
car_info pop(sqstack *s)
{
    car_info e;
    if(s->top==s->base)  
    {
        printf("停车场内没有该车辆!\n");
        exit(0);
    }
   
    e=*--s->top;
    s->stacksize--;
    return e;
}
2010-12-29 12:23
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
typedef struct Qnode
{
    int car_num;
    int time;
    struct Qnode *next;
}QNode,*QueuePtr;

typedef struct
{
    QueuePtr front;
    QueuePtr rear;
    int lenth;
}LinkQueue;

/*初始化队列函数*/
status InitQueue(LinkQueue *Q)
{
    Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));

    if(!Q->front)
    {
        exit(OVERFLOW);
    }
    Q->front->next=NULL;
    Q->lenth=0;

    return OK;
}
/*进队列*/
void EnQueue(LinkQueue *Q,car_info *a )
{  
    QueuePtr p;
    p=(QueuePtr)malloc(sizeof(QNode));
    if(!p)
    {
        exit(OVERFLOW);
    }

    p->car_num=a->car_num;
    p->time=a->time;
    p->next=NULL;
    Q->rear->next=p; //新插入的结点插入到rear 后面
    Q->rear=p; //rear指针后移
    Q->lenth++; //长度加一

}
/*出队列  并返回出队列的信息*/
QueuePtr DeQueue(LinkQueue *Q)
{
    QueuePtr p,e,s={0};
    if(Q->front==Q->rear)
    {
        printf("便道上没有车辆!\n");
        return s;
    }

    p=Q->front->next;
    e=p;
    Q->front->next=p->next;
    Q->lenth--;
    if(Q->rear==p)//判断出队列的是否为最后一个结点
    {//是
        Q->front=Q->rear;
    }
    //free(p);
    return e;
  
}
2010-12-29 12:23
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
上面两段 分别是 栈 和 队列的 相关操作
2010-12-29 12:24
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
版主,能不能给我一个程序运行的截图
2010-12-29 12:26
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
我知道上面是几个函数的定义
2010-12-29 12:28
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2010-12-29 12:45
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
后面的计算 自己在确认下

main()中的
scanf("%d%lf",&n,&pay);

浮点数的f 改成lf  不然录不进去  本机上是这样子的
自己的根据情况改动吧
2010-12-29 12:46
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
版主,我的“停车费用”怎么没实现呢?
2010-12-29 16:26
xy2bl
Rank: 1
等 级:新手上路
帖 子:61
专家分:2
注 册:2010-12-2
收藏
得分:0 
版主,我的“停车费用”怎么没实现呢?
2010-12-29 18:09
快速回复:此程序如何运行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022460 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved