买卖迷你模拟器

buying and selling mini-simulator

本文关键字:模拟器 买卖      更新时间:2023-10-16
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;
}

上面的代码根据产品的可用性计算产品的价格,然后"购买",减少商品的供应量和客户的钱,每次购买后重新计算商品的价格。当客户决定出售产品时,也会发生类似的过程。这里的亮点是输出:money变量的最后一个值是10099,而不是预期的10000。你会怎么解决这个问题?

问题是,当最后一件物品被购买时,它是以适合N供应的价格购买的。然后供应减少到N - 1。第一个要出售的项目然后以适合N - 1供应的价格出售。把这个问题重复100次,这就解释了你的差异。

如果您希望物品以与购买时相同的价格出售,那么您应该在sell循环中的价格计算之前增加supply