买卖迷你模拟器
buying and selling mini-simulator
void test(){
double money = 10000;
double price = 0;
int supply = 101;
price = static_cast<double>(100) / supply;
//buying
for (int i = 0; i < 100; i++)
{
price = static_cast<double>(100) / supply;
money -= price;
supply--;
}
//selling
for (int i = 0; i < 100; i++)
{
price = static_cast<double>(100) / supply;
money += price;
supply++;
}
cout << money << endl;
}
上面的代码根据产品的可用性计算产品的价格,然后 "buys",减少商品的供应和客户的钱,在重新计算商品的同时一次减少一个每次购买后的价格。当客户决定出售产品时,也会发生类似的过程。这里的错误是输出:money 变量的最后一个值是 10099 而不是预期的 10000。你会如何解决这个问题?
问题是当最后一件商品被购买时,它是以适合 N
供应的价格购买的。然后供应减少到 N - 1
。然后以适合 N - 1
供应的价格出售第一个要出售的物品。重复这个问题 100 次,这就解释了你的不同之处。
如果您希望物品以与购买时相同的价格出售,那么您应该在销售循环中的价格计算之前递增 supply
。
void test(){
double money = 10000;
double price = 0;
int supply = 101;
price = static_cast<double>(100) / supply;
//buying
for (int i = 0; i < 100; i++)
{
price = static_cast<double>(100) / supply;
money -= price;
supply--;
}
//selling
for (int i = 0; i < 100; i++)
{
price = static_cast<double>(100) / supply;
money += price;
supply++;
}
cout << money << endl;
}
上面的代码根据产品的可用性计算产品的价格,然后 "buys",减少商品的供应和客户的钱,在重新计算商品的同时一次减少一个每次购买后的价格。当客户决定出售产品时,也会发生类似的过程。这里的错误是输出:money 变量的最后一个值是 10099 而不是预期的 10000。你会如何解决这个问题?
问题是当最后一件商品被购买时,它是以适合 N
供应的价格购买的。然后供应减少到 N - 1
。然后以适合 N - 1
供应的价格出售第一个要出售的物品。重复这个问题 100 次,这就解释了你的不同之处。
如果您希望物品以与购买时相同的价格出售,那么您应该在销售循环中的价格计算之前递增 supply
。