用于打印副本的C#程序

时间:2013-08-15 13:36:46

标签: c#

对于复印出来的前100份论文,我的程序每张印刷版需要2美元。如果用户打印出超过一个hundread副本,对于每个副本都是hundread,每个副本需要1个数据(所以如果我想要打印出101个副本,那么价格应该是200 + 1,第101个拷贝是1美元前100份每份2美元)。这是我的代码:

int CopyCost = 2;
        int ammountOfCopies;
        int discount = 1;
        Console.WriteLine("How many copies would you like?: ");
        ammountOfCopies = int.Parse(Console.ReadLine());


        for (int i = 0; i < ammountOfCopies; i++)
        {
        if (ammountOfCopies > 100)
            CopyCost = 2 - discount;
        else
            CopyCost =  2;

        CopyCost *= ammountOfCopies;
        }
        Console.WriteLine("The total cost for your copies is: {0} ", CopyCost);

        Console.ReadLine();

但我遇到的问题是,如果我选择写出101份副本,它会将每份副本折扣为1美元,而不仅仅是100份以上的副本。

4 个答案:

答案 0 :(得分:8)

这是一个数学问题,而不是编码问题。您需要将副本数量设置为100或低于100,并将其与正常价格相乘。然后将份数超过100并乘以折扣价。不需要for循环。

将问题分解为代码中的小部分,例如:

int price = 2;
int discountedPrice = price - 1;
int amountAtNormalPrice = Math.Min(amountOfCopies, 100);
int amountAtDiscountPrice = Math.Max(amountOfCopies - 100, 0);
int amountTotal = (amountAtNormalPrice * price) + (amountAtDiscountedPrice * discountedPrice);

答案 1 :(得分:0)

您正在遍历每个副本(numberOfCopies,btw,而不是amountOfCopies)并且每次都应用计算。你应该直接计算;在这种情况下不需要循环:

if (numberOfCopies > 100)
{
    CopyCost = 200 + (numberOfCopies - 100);
}
else
{
    CopyCost = 2 * numberOfCopies;
}

答案 2 :(得分:0)

更好,请使用此代码:

int TotalCost;

if (amountOfCopies > 100)
{
    TotalCost = (amountOfCopies - 100) * (CopyCost - discount) + 100 * CopyCost;
}
else
{
    TotalCost = amountOfCopies * CopyCost;
}

Console.WriteLine("The total cost for your copies is: {0} ", TotalCost);

答案 3 :(得分:0)

或者如果你喜欢单行:

price = (copies * 2) - Math.Max(copies - 100, 0);