我不得不计算一定数量的门票的价格,就像一个主题公园。门票的价格和数量必须由用户提供,但这不是我的问题。我的问题是,当用户输入11张票时,他会得到一张免费的第11张票,但当他超过11张时,他仍然要支付第11张票的费用。有人能帮我吗?
这是我的密码:
static void Main(string[] args)
{
Console.Write("Voer de prijs van de ticket in: ");
int priceTicket = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Eent ticket kost €{0},-\n\n", priceTicket);
Console.Write("Voer in hoeveel tickets u wilt (per 10 1 gratis): ");
int amountTickets = Convert.ToInt32(Console.ReadLine());
int ticketsTotalPrice = amountTickets * priceTicket;
if(ticketsTotalPrice % 11 == 0)
{
ticketsTotalPrice -= priceTicket;
}
string ticketsTotalPriceStr = ticketsTotalPrice.ToString();
Console.WriteLine("\n\nU heeft "+amountTickets +" tickets gekozen, dit kost " +ticketsTotalPriceStr);
}发布于 2015-09-08 18:04:36
价格公式是(total- (total/11))*TicketPrice
total/11是免费票的计数。
(total- (total/11))是他应该付的票的数目
(total- (total/11))*TicketPrice是他应该付出的总价
int total=10,则需计算10张票;
int total=11,则需计算10张票;
int total=12则为11张票;
..。
..。
int total=21则为20张票;
int total=22则为20张票;
int total=23则为21张票;
发布于 2015-09-08 17:50:20
当用户购买11张票的倍数时,即11、22、33、.在这种情况下,你减少的数额正好一个票价,所以只有10,21,32,.你得重新考虑这部分。既然这是家庭作业,我就不详细讲了,因为这是,你应该试着找出来的。
如果我不知道更多,我开始枚举不同的情况,然后尝试找到一个模式。我想它应该是这样的:左订票,右票支付:
1->1,2->2,9->9,10->10,11->10,
12->11,13->12,.>19,21->20,22->20,
23->21,24->22,31->29,32->30,33->30,
34->31 .
约翰尼·莫普拿走了整数除法是关键。每买11张票,你就能得到1张免费票。所以免费票是numberOfTickets / 11。但既然你不送部分票,你就得把这个数目加起来。整数除法就是这样做的(至少对于正数,但不想混淆)。
发布于 2015-09-08 18:02:26
我的问题是,当用户输入11张票时,他会得到一张免费的第11张票,但当他超过11张时,他仍然要支付第11张票的费用。
将其更改为只适用于有11张票时的折扣:
int ticketsTotalPrice = amountTickets * priceTicket;
if (amountTickets == 11) {
ticketsTotalPrice -= priceTicket;
}替代品
如果你不是认真的,我认为你的意思,这里有一些替代的解决方案。
如果你想让每11张票都是免费的,那么你可以这样做:
int ticketsTotalPrice = (amountTickets - amountTickets / 11) * priceTicket;或者,如果您希望它只在票数可除以11的情况下应用折扣,则可以这样做:
int ticketsTotalPrice = amountTickets * priceTicket;
if (amountTickets % 11 == 0) {
ticketsTotalPrice -= amountTickets / 11 * priceTicket;
}https://stackoverflow.com/questions/32464106
复制相似问题