qq_24052725 2015-12-23 13:34 采纳率: 0%
浏览 1415

C++程序编译出错,帮忙修改,可以的话,把修改后的完整程序发上来

#include
#include
#include
#define max 5
typedef struct{
char b;//存储商品名
//商品日期年、月、日
int year;
int month;
int day;
}Data;
typedef struct{
Data a[max];//0为栈底位置
int top;//栈顶
}Stack;
//初始化空栈
Stack *initstack(){
Stack *S;
S=(Stack *)malloc(sizeof(Stack));//申请空间 //判断是否申请到栈空间
if(!S){
printf("空间不足!\n");
return NULL;}
else{
S->top=-1;
return S;}}//将货架上摆放的货物打印出来
void Print(Stack *S){
printf(“这个商品的货架上摆放了%d个货物\n",S->a[S->top].b,S->top+1); while(S->top>-1){
printf("%c%d/%d/%d\n",S->a[S->top].b,S->a[S->top].year,S->a[S->top].month,S->a[S->top].day);
S->top--;}}
//上货
Stack *onput(Stack *S){
int j;char k1;
int k2,k3,k4;
for(j=0;j if(S->top==max-1){
printf("栈满!\n");//栈满不能入栈
return S;}
S->top++;
printf("栈数%d ",S->top);
//输入商品名和生产日期
fflush(stdin);//清除缓存区
scanf("%c %d/%d/%d",&k1,&k2,&k3,&k4);
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;}
printf("该商品的货架满了!\n");
printf("此时该商品的货架上共有%d个商品\n\n",S->top+1);
return S;}
//倒货
Stack *outstack(Stack *S,Stack *L){
L->top++;
L->a[L->top]=S->a[S->top];
S->top--;
printf("此时的栈顶数为:%d\n",S->top);
printf("倒货一次!\n\n");
return L;}
//补货
void backstack(Stack *S,int x){
int i,ii;
int temp;
char k1;//储存商品名
int k2,k3,k4;//储存生产日期分别对应年月日
Stack *L;
L=initstack();//重新申请一个空栈用来倒货时存放货物
printf("请输入要补上货架的商品名(一个字符)空一格并输入该商品生产日期(年/月/日)每上货一件以回车键结束:\n");
for(i=1;i<=x;i++){
//输入商品名和生产日期
fflush(stdin);//清除缓存区
scanf("%c %d/%d/%d",&k1,&k2,&k3,&k4);
if(S->top==-1){//此时货架上无商品可以直接上货
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!\n",i);
printf("此时的栈顶数为:%d\n",S->top);}
else{
if(k2a[S->top].year){
//若生产年份要补上货架的比货架上的早则直接上货架
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!\n",i);
printf("此时的栈顶数为:%d\n",S->top);
temp=1;}
else{for(ii=S->top;ii>-1&&S->top!=-1;ii--){
temp=0;//用来标记是否有货物上架
if(k2==S->a[S->top].year){
//若生产年份要补上货架的与货架上的一样则比较月份
if(k3a[S->top].month){
//若生产月份要补上货的比货架上的早则直接上货
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!\n",i);
printf("此时的栈顶数为:%d\n",S->top);
temp=1;
if(temp==1)break;}
else{
if(k3==S->a[S->top].month){
//若生产月份要补上货架的与货架上的一样则比较生产当天日期
if(k4<=S->a[S->top].day){
//若生产当天日期要补上货的比货架上的早或是相同则直接上货否则要倒货重新上货架
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!\n",i);
printf("此时的栈顶数为:%d\n",S->top);
temp=1;
if(temp==1)break;}
else{//倒货L=outstack(S,L);}}
else{//倒货L=outstack(S,L);}}}
if(k2>S->a[S->top].year){//此时生产年份要补上货架的比货架上的近
L=outstack(S,L);}//倒货
if(temp==0){
S->top++;
S->a[S->top].b=k1;
S->a[S->top].year=k2;
S->a[S->top].month=k3;
S->a[S->top].day=k4;
printf("补货成功第%d件!\n",i);
printf("此时的栈顶数为:%d\n",S->top);}
while(L->top>-1){//将存储在L栈中的商品上架
S->top++;
S->a[S->top]=L->a[L->top--];}
L=initstack();}}}
printf("补货完成!!\n\n");
Print(S);}
//出货
void *outpush(Stack *S){
printf("请店主输入今天%c这个商品销售出去的数量:",S->a[S->top].b); int x,i;fflush(stdin);
do{fflush(stdin);
scanf("%d",&x);
if(x>max)
printf("该货架上没有这么多商品!请重输!\n");
}while(x>max);
for(i=1;i<=x;i++)S->top--;
printf("此时%c这个商品的货架的数量剩下%d件需要补上货架的数量为%d\n\n",S->a[S->top].b,S->top+1,x);
//补货
backstack(S,x);}
int main(void){
Stack *s[5];//5种商品
int i;
printf("计算机科学与技术1班 丁逸悦 学号:1308010108\n\n");
printf("商店共有5种商品,分别是a,b,c,d,e\n\n");
for(i=0;i<5;i++){
s[i]=initstack();//初始化栈
printf("请输入要上货的第%d种商品名(一个字符)空一格并输入该商品生产日期(年/月/日)每上货一件以回车键结束:\n",i+1);
s[i]=onput(s[i]);}//将商品入栈(上货)
char c,yes_no;
do{
fflush(stdin);
printf("请店主输入今天有销售出去一个商品的商品名:\n");
fflush(stdin);
scanf("%c",&c);
switch(c){
case 'a':outpush(s[0]);break;
case 'b':outpush(s[1]);break;
case 'c':outpush(s[2]);break;
case 'd':outpush(s[3]);break;
case 'e':outpush(s[4]);break;
default:printf("商店无%c此商品!输入错误!\n",c);}
do{fflush(stdin);
printf("请问店主还有销售出去的商品么?如果有请按Y,否则按N\n"); yes_no=getchar();
if(yes_no!='Y'&&yes_no!='N'){
printf("输入错误!!!\n\n");}
}while(yes_no!='Y'&&yes_no!='N');
}while(yes_no=='Y');
return 0;}

  • 写回答

7条回答 默认 最新

  • threenewbee 2015-12-23 13:45
    关注

    Stack在哪里定义的,代码都不全。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?