问题标题:
编写程序Program1_3用来仿真下面形式的离散时间信号:x[n]={.,0.1,1.1,-1.2,0,1.3,….}↑n=0
问题描述:
编写程序Program1_3用来仿真下面形式的离散时间信号:x[n]={.,0.1,1.1,-1.2,0,1.3,….}↑n=0
梅强回答:
实现我就不写了
1、建立顾客类,大体如下
classConsumer
{
private:
intcount;//购买商品件数
boolcash;//是否是用现金
public:
intQuantity();//返回购买商品件数
boolCash();//返回是否是用现金
intTime();//付款过程耗时
voidGenerate();//按照频率分布表生成此顾客信息
};
2、建立柜台类
classCounter
{
private:
queue<pair<Consumer,int>>Q;//记录该柜台前排队的顾客的队列
intlast_come;//记录正在柜台前付款的那个顾客来到柜台的时刻
public:
Counter();//构造函数,把队列清空,last_come设置为0
voidConsumer_Come(Consumer,int);//第一个形参为该顾客的信息,第二个形参为该顾客开始排队的时间
intPay();//模拟柜台前的各个顾客的付款,并返回完成的时刻
};
3、对现有系统的模拟
首先生成随机数n表示一共有n个顾客到来,然后生成这n个顾客的信息,然后按照0.5min的间隔将这n个顾客随机塞到4个柜台,然后付款,并记录最终完成时间
代码近似如下
n=rand();
for(i=0;i<n;i++)
{
Consumernow;
now.Generate();
counters[rand()%4].Consumer_Come(now,i*30);
}
end=0;
for(i=0;i<4;i++)
{
intnow=counters[i].Pay();
if(now>end)end=now;
}
最后end记录的就是完成时间
4、模拟倡议的系统的运转
类似3里面那样生成n个顾客的信息,假定柜台0是普通柜台,柜台1是8个或8个一下商品的,柜台2、3是现金
然后将这n个顾客用类似于3的过程按照倡议的要求塞入这四个柜台,然后付款,然后记录时间
点击显示
其它推荐