永发信息网

我这程序错哪里了?跪求请高手解答。。

答案:1  悬赏:0  手机版
解决时间 2021-08-12 23:39
#include<iostream>
using namespace std;
typedef int SElemType;
typedef struct { //建立顺序栈存储结构
SElemType *base;
SElemType *top;
int stacksize;
}Sqstack;
int init(Sqstack &s,int maxsize) //初始化
{
s.base=new SElemType[maxsize];
if(!s.base)exit(1);
s.top=s.base;
s.stacksize=maxsize;
return 0;
}
int push(Sqstack &s,int e) //入栈
{
if(s.top-s.base==s.stacksize)return 0;
else{*s.top=e;
s.top++;}
return 0;
}
int pop(Sqstack &s) //出栈
{
int e;
if(s.top==s.base){return 0;}
else{e=*--s.top;}
return e;
}
int length(Sqstack &L) //求栈长
{
SElemType *p;
p=L.base;
int i;
for(int i=0;p!=L.top;i++)
{p++;}
return i;
}
int showout(Sqstack L) //显示栈内所有元素
{
if(L.top==L.base)
{cout<<"货架已空"<<endl;
return 0;
}
SElemType *p;
for(p=L.base;p!=L.top;p++)
cout<<"商品"<<*p<<endl;
return 0;
}
int a,b,c; //定义几个全局变量
int select(Sqstack &Q,Sqstack &S,Sqstack &D);
inital(Sqstack &Q,Sqstack &S,Sqstack &D) //开始函数,建立货架,并存放商品
{cout<<"请确定货架大小"<<endl;
cin>>a;
init(Q,a+1); //货架
init(S,a+1); //辅助货架
init(D,a+1); //记录营业情况
cout<<"货架已经建立,请输入商品编号,生产日期早的编号小,先输入"<<endl;
c=1; //初始化c,使每次输入都有效
for(int i=1;i<=a;i++)
{
cin>>b;
if(b<c){cout<<"编号不合法";inital(Q,S,D);}
push(S,b); //入辅助栈
c=b;
}
for(i=1;i<=a;i++)
{int d;
d=pop(S);
push(Q,d);
}
cout<<"货架已经放满,可以开始营业"<<endl;
return 0;
}
int sell(Sqstack &Q,Sqstack &S,Sqstack &D) //出售商品
{
if(Q.base==Q.top){cout<<"商品已经售空"<<endl;}
int f=pop(Q);
push(D,f);
cout<<"商品"<<f<<"已经售出"<<endl;
select(Q,S,D);
return 0;
}
int selectstate(Sqstack &Q,Sqstack &S,Sqstack &D)

//查询营业情况
{
cout<<"已经售出的商品"<<length(D)<<endl;
cout<<"还有"<<length(Q)<<"件商品可以出售"<<endl;
select(Q,S,D);
return 0;
}
int getother(Sqstack &Q, Sqstack &S, Sqstack &D )

//结束营业,并进货
{
cout<<"营业时间"<<endl;
if (D.top==D.base){cout<<"无需进货"<<endl;select(Q,S,D);}
else cout<<"无需进货"<<length(D)<<"件"<<endl;
for(int i=1;i<=a-length(D);i++) //倒货到辅助栈

{
int j=pop(Q);
push (S,j);
}
cout<<"请输入商品编号"<<endl;
for(i=1;i<=length(D);i++) //新商品入辅助栈

{
cin>>b;
if(b<c){cout<<"编号有误"<<endl;getother(Q,S,D);}
push(S,b);
c=b;
}
for(i=1;i<<=a;i++) //商品导入货架
{
int k=pop(S);
push(Q,k);
}
D.top=D.base; //初始化辅助栈
cout<<"进货完成,可以开始营业"<<endl;
select(Q,S,D);
return 0;
}
int select(Sqstack &Q,Sqstack &S,Sqstack &D) //功能旋转
{
cout<<"----------------请选择操作----------------"<<endl;
cout<<"1.出售商品 2.查看营业情况"<<endl;
cout<<"3.查看货架商品 2.结束营业并进货"<<endl;
cout<<"5.退出程序"<<endl;
int n;cin>>n;
if(n==1)sell(Q,S,D);
else if(n==2)selectstate(Q,S,D);
else if(n==3){showout(Q);select(Q,S,D);}
else if(n==4)getother(Q,S,D);
else if(n==5)exit(1);
else {cout<<"没有这个操作"<<endl;select(Q,S,D);}
return 0;
}
int main()
{
Sqstack Q,S,D; //定义三个栈
inital(Q,S,D);
select(Q,S,D);
return 0;
}
最佳答案

#include<iostream>
using namespace std;
typedef int SElemType;
typedef struct { //建立顺序栈存储结构
SElemType *base;
SElemType *top;
int stacksize;
}Sqstack;
int init(Sqstack &s,int maxsize) //初始化
{
s.base=new SElemType[maxsize];
if(!s.base)exit(1);
s.top=s.base;
s.stacksize=maxsize;
return 0;
}
int push(Sqstack &s,int e) //入栈
{
if(s.top-s.base==s.stacksize)return 0;
else{*s.top=e;
s.top++;}
return 0;
}
int pop(Sqstack &s) //出栈
{
int e;
if(s.top==s.base){return 0;}
else{e=*--s.top;}
return e;
}
int length(Sqstack &L) //求栈长
{
SElemType *p;
p=L.base;
int i;
for(int i=0;p!=L.top;i++)
{p++;}
return i;
}
int showout(Sqstack L) //显示栈内所有元素
{
if(L.top==L.base)
{cout<<"货架已空"<<endl;
return 0;
}
SElemType *p;
for(p=L.base;p!=L.top;p++)
cout<<"商品"<<*p<<endl;
return 0;
}
int a,b,c,i; //定义几个全局变量
int select(Sqstack &Q,Sqstack &S,Sqstack &D);
int inital(Sqstack &Q,Sqstack &S,Sqstack &D) //开始函数,建立货架,并存放商品
{
cout<<"请确定货架大小"<<endl;
cin>>a;
init(Q,a+1); //货架
init(S,a+1); //辅助货架
init(D,a+1); //记录营业情况
cout<<"货架已经建立,请输入商品编号,生产日期早的编号小,先输入"<<endl;
c=1; //初始化c,使每次输入都有效
for(i=1;i<=a;i++)
{
cin>>b;
if(b<c){cout<<"编号不合法";inital(Q,S,D);}
push(S,b); //入辅助栈
c=b;
}
for(i=1;i<=a;i++)
{int d;
d=pop(S);
push(Q,d);
}
cout<<"货架已经放满,可以开始营业"<<endl;
return 0;
}
int sell(Sqstack &Q,Sqstack &S,Sqstack &D) //出售商品
{
if(Q.base==Q.top){cout<<"商品已经售空"<<endl;}
int f=pop(Q);
push(D,f);
cout<<"商品"<<f<<"已经售出"<<endl;
select(Q,S,D);
return 0;
}
int selectstate(Sqstack &Q,Sqstack &S,Sqstack &D)


//查询营业情况
{
cout<<"已经售出的商品"<<length(D)<<endl;
cout<<"还有"<<length(Q)<<"件商品可以出售"<<endl;
select(Q,S,D);
return 0;
}
int getother(Sqstack &Q, Sqstack &S, Sqstack &D )


//结束营业,并进货
{
int i;
cout<<"营业时间"<<endl;
if (D.top==D.base){cout<<"无需进货"<<endl;select(Q,S,D);}
else cout<<"无需进货"<<length(D)<<"件"<<endl;
for(i=1;i<=a-length(D);i++) //倒货到辅助栈


{
int j=pop(Q);
push (S,j);
}
cout<<"请输入商品编号"<<endl;
for(i=1;i<=length(D);i++) //新商品入辅助栈


{
cin>>b;
if(b<c){cout<<"编号有误"<<endl;getother(Q,S,D);}
push(S,b);
c=b;
}
for(i=1;i<<=a;i++) //商品导入货架
{
int k=pop(S);
push(Q,k);
}
D.top=D.base; //初始化辅助栈
cout<<"进货完成,可以开始营业"<<endl;
select(Q,S,D);
return 0;
}
int select(Sqstack &Q,Sqstack &S,Sqstack &D) //功能旋转
{
cout<<"----------------请选择操作----------------"<<endl;
cout<<"1.出售商品 2.查看营业情况"<<endl;
cout<<"3.查看货架商品 2.结束营业并进货"<<endl;
cout<<"5.退出程序"<<endl;
int n;cin>>n;
if(n==1)sell(Q,S,D);
else if(n==2)selectstate(Q,S,D);
else if(n==3){showout(Q);select(Q,S,D);}
else if(n==4)getother(Q,S,D);
else if(n==5)exit(1);
else {cout<<"没有这个操作"<<endl;select(Q,S,D);}
return 0;
}
int main()
{
Sqstack Q,S,D; //定义三个栈
inital(Q,S,D);
select(Q,S,D);
return 0;
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
闽南话和闽北话有什么区别?
网吧玩生化五怎样存档和读取
二分法求近似值的基本步骤
道里区哈尔滨时尚馨房地址在什么地方,想今天
为什么我的oppo a121在我边听歌和上网时自动
大学可以学到什么英语,有什么手机软件可以学
Windows7 SP1版本有些什么改变?
夏天晒伤了,有什么办法可以白回来么?
心满意足什么意思,心满意足的足什么意思
dnf黄色的触角是什么辅助啊?
QQ音速怎么一会一卡?
3.My wish is to be an engineer in the futu
PMP能下载马里奥赛车吗?
谁帮我弄个团徽,颜色要艳点的,谢谢急用。
怎么下载3GP手机电影
推荐资讯
心好烦恼,请问该怎么办?
什么娱乐健康?
谁能给我«驶向我的自行车»这首歌的 链接 、
用三种不同的方法鉴别Cu,Zn,合金,和真黄金
让胡路区大庆鑫龙鼎旋转火锅这个地址怎么能查
颗粒板和实木板哪个好,实木颗粒板和大芯板有
有一些数字:1,1,3,4,5,6,7,8,在这些数之间加
蔡甸区武汉后官湖湿地公园在哪里啊,我有事要
驿城区驻马店丰翼第一幼儿园地址在哪里啊
初一学生毕业评语,初中学生评语
热情制作的死神漫画
产品简介包括哪些内容,如何写企业的产品介绍
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?