我正在试图弄清楚我们如何在这个机器问题中将一组结构实现到堆栈中。以下是问题所在:
制作一个允许用户通过数组方法执行以下活动的程序。停车场站提供10条停车场车道,每条车道可容纳5辆车。
a.入场。它必须能够登记新车和指定一个可用的停车车道。登记需要车牌号码、品牌名称、汽车颜色、车主和电话号码。
b.释放。它必须能够将汽车从指定的车道上释放出来。
c.搜查。它必须能够根据车牌号码识别汽车的位置。
d.空缺。它必须能够显示可用的停车位。
据我所知,我必须创建一个包含各种数据类型的二维结构数组,并且我必须利用它生成一个lifo代码。但我的问题是,我知道如何用一个数据类型来模拟数组方法lifo代码,而不是使用多个数据类型。我必须将结构的二维数组实现到堆栈中的部分是我陷入困境和困惑的地方。我在网上搜索过,寻找类似我的问题,但我找不到任何。我试图做一个代码如下所示:
struct Car
{
string brand, color, owner;
int plate, phone;
};
class Stack
{
private:
Car * pointer = new Car[10][5];
int top;
public:
Stack() // Constructor
{...}
void Push(int plate, string brand, string color, string color, string owner, int number)
{...}
Pop()
{...}
}
发布于 2017-11-14 10:24:15
在选择实际的实现解决方案(如2-dim数组)之前,尝试进一步分析您的问题。
在您的任务中,您有以下抽象实体:
CarParkStation
:NumberOfParkLanes
,它应该能够执行如下操作:FindFreeLane
、FindCar(plateNum)
、RegisterACar(car)
、ReleaseACar(car)
Lane
:NumberOfPlaces
,以及动作如:IsFull()
,还有:FindACar(plateNum)
、AddACar(car)
、RemoveACar(car)
Car
:PlateNumber
、Brand
、Color
、Owner
,这些属性应该能够执行:GetPlateNumber()
,并且可能还提供对其他参数的访问。下面是可能的CarParkStation
类声明的一个非常普遍的示例:
class CarParkStation
{
public:
CarParkStation() = delete;
explicit CarParkStation(int numParkLanes);
~CarParkStation() = default;
std::shared_ptr<const Lane> FindFreeLane();
std::shared_ptr<const Car> FindCar(const PlateNumber& pNumber);
std::pair<std::shared_ptr<const Lane>, int position> FindWhereMyCarIsParked(const PlateNumber& pNumber);
bool RegisterACar(const Car& car);
bool ReleaseACar(const Car& car);
private:
std::vector<std::shared_ptr<const Lane> > lanes_;
std::set<std::shared_ptr<Car>, CustomCompareFunction > cars_;
};
不要忘记在实现的同时编写测试。这将帮助您验证您的需求和总体设计。例如:
TEST_F(CarParkStationShould, returnCorrectFreeLane)
{
ASSERT_EQ(expectedFreeLane, carParkStation->FindFreeLane());
}
一般来说,首先关注应用程序应该做什么,然后考虑如何实现它。
https://stackoverflow.com/questions/47282301
复制相似问题