用于打印副本的C#程序
本文关键字:程序 副本 打印 用于 | 更新日期: 2023-09-27 18:27:58
我的程序在复印的前100篇论文中,每打印一份需要2美元。如果用户打印出超过一百份,那么每一份超过一百份需要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本以上的那本。
这更多的是一个数学问题,而不是一个编码问题。你需要取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);
您在每个副本(numberOfCopies,btw,而不是amountOfCopies)上循环,并每次应用计算。你应该直接计算;在这种情况下不需要循环:
if (numberOfCopies > 100)
{
CopyCost = 200 + (numberOfCopies - 100);
}
else
{
CopyCost = 2 * numberOfCopies;
}
更好,使用以下代码:
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);
或者,如果您喜欢单行:
price = (copies * 2) - Math.Max(copies - 100, 0);