栈结构数组
Stack array of structures
我试图弄清楚我们如何在我遇到的这台机器问题中将结构数组实现到堆栈中。问题是:
制作一个程序,允许用户通过数组方法执行下述活动。 Car Park Station提供10条停车道,每条车道可容纳5辆汽车。
一个。入口。它必须能够注册新车并分配可用的停车道。注册需要车牌号、品牌名称、汽车颜色、车主和电话号码。
b。发布。它必须能够从识别的车道释放汽车
c。搜索。它必须能够根据车牌号识别汽车位置。
d。空缺。它必须能够显示可用停车位 space.
据我了解,我必须制作一个包含各种数据类型的二维结构数组,并且我必须从中制作后进先出代码。但我的问题是,我知道如何使用一种数据类型而不是多种数据类型来模拟数组方法后进先出代码。我必须将二维结构数组实现到堆栈中的部分是我陷入困境和困惑的地方。我在网上搜索过类似我的问题,但我找不到任何问题。我尝试制作如下所示的代码:
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()
{...}
}
在选择实际的实施解决方案(如 2-dim 数组)之前,请尝试进一步分析您的问题。
在您的任务中,您有以下抽象实体:
CarParkStation
具有属性:NumberOfParkLanes
,它应该能够执行以下操作:FindFreeLane
、FindCar(plateNum)
、RegisterACar(car)
、ReleaseACar(car)
Lane
具有属性:NumberOfPlaces
,并具有类似的操作:IsFull()
,也许还有:FindACar(plateNum)
、AddACar(car)
、RemoveACar(car)
Car
with attributes: PlateNumber
, Brand
, Color
, Owner
, 应该可以做到: GetPlateNumber()
,也许还提供对其他参数的访问
下面是可能的 CarParkStation
class 声明的一个非常普遍的例子:
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());
}
一般来说,首先关注你的应用程序应该做什么,然后再考虑如何实现它。
我试图弄清楚我们如何在我遇到的这台机器问题中将结构数组实现到堆栈中。问题是:
制作一个程序,允许用户通过数组方法执行下述活动。 Car Park Station提供10条停车道,每条车道可容纳5辆汽车。
一个。入口。它必须能够注册新车并分配可用的停车道。注册需要车牌号、品牌名称、汽车颜色、车主和电话号码。
b。发布。它必须能够从识别的车道释放汽车
c。搜索。它必须能够根据车牌号识别汽车位置。
d。空缺。它必须能够显示可用停车位 space.
据我了解,我必须制作一个包含各种数据类型的二维结构数组,并且我必须从中制作后进先出代码。但我的问题是,我知道如何使用一种数据类型而不是多种数据类型来模拟数组方法后进先出代码。我必须将二维结构数组实现到堆栈中的部分是我陷入困境和困惑的地方。我在网上搜索过类似我的问题,但我找不到任何问题。我尝试制作如下所示的代码:
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()
{...}
}
在选择实际的实施解决方案(如 2-dim 数组)之前,请尝试进一步分析您的问题。
在您的任务中,您有以下抽象实体:
CarParkStation
具有属性:NumberOfParkLanes
,它应该能够执行以下操作:FindFreeLane
、FindCar(plateNum)
、RegisterACar(car)
、ReleaseACar(car)
Lane
具有属性:NumberOfPlaces
,并具有类似的操作:IsFull()
,也许还有:FindACar(plateNum)
、AddACar(car)
、RemoveACar(car)
Car
with attributes:PlateNumber
,Brand
,Color
,Owner
, 应该可以做到:GetPlateNumber()
,也许还提供对其他参数的访问
下面是可能的 CarParkStation
class 声明的一个非常普遍的例子:
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());
}
一般来说,首先关注你的应用程序应该做什么,然后再考虑如何实现它。