问C++自编停车厂程序纠错

来源:百度知道 编辑:UC知道 时间:2024/06/27 06:29:31
问C++自编停车厂程序纠错 ,请高手帮忙纠错,能编译,不能使车离开
//=================================
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
//=================================
using namespace std;
//=================================

//用于对汽车信息的记录

typedef struct{
string license_plate;
char state; //汽车当前状态,字符s表示停放在停车位上,
}CAR;
CAR *Car=new CAR;

//用于停车位
#define MAX_STOP 5
typedef struct{
CAR STOP[MAX_STOP]; //各汽车信息的存储空间
int top; //用来指示栈顶位置的静态指针
}STOPPING;
STOPPING *stopping=new STOPPING;

//====================================================================
//用于辅助栈
typedef struct
{
CAR _BUFFER[MAX_STOP];
int top;
}BUFFER;
BUFFER *buffer=new BUFFER;
//=====================================================================

for(int i=stopping->top;i>=0;i--)
{
if(stopping->STOP[i].license_plate=Car->license_plate)
break;
}
具体思路好像没错,只是你的这里错了,if里的==,你写成了=(少了一个=)所以出来,你的if是个永真的条件,你的i的值不对

因为你的strcmp(stopping->STOP[i].license_plate为string 所以要用API的strcmp进行比较如下
if( strcmp(stopping->STOP[i].license_plate,Car->license_plate) == 0 )
或者你重载一下C++的“==”算符

补充:
你这是个改了,可是还是没有重载C++的“==”算符,你用的还是系统的,这样还是对指针比较所以不对,还有你对栈的操作变量用的混乱,一个"i"三个地方用,三个地方改,不错很难,只是说你的思路是对的,变量可以按下面的改一下试试
(注,没做优化,有的变量多余如你的j可以考虑去了,用栈顶代替,你这个不支持多线程,这里你的top要指向栈顶,要保证程序中全是指向栈顶,不是栈顶的下一个)
//=======================移入辅助栈=======================================================
int j=-1;
for( int k=stopping->top;(buffer->top!=MAX_STOP-1)&&(k>=m);k--)
{

buffer->top++;
j++;
buffer->_BUFFER[j].license_plate=stopping->STOP[k].license_plate;
stopping->top--;

}

j=j-1;