如何从我的新 int 值开始计算?
How to count from my new int value?
我不得不计算一定数量的门票价格,比如主题公园。
门票的价格和数量必须由用户给出,但这不是我的问题。
我的问题是,当用户输入 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);
}
ticketsTotaalPrijs % 11 == 0
仅考虑用户购买 11 的倍数门票时的情况,即 11、22、33、...
在这些情况下,您可以将金额正好减少一个票价,因此只有 10、21、32、...
你需要重新考虑这部分。既然是作业,就不细说了,既然是这个,大家应该去了解一下。
如果我不知道更多,我会开始列举不同的情况,然后尝试找到一个规律。我想它应该是这样的: 左订票,右票支付:
1->1,
2->2,
...
9->9,
10->10,
11->10,
12->11,
13->12,
...
20->19,
21->20,
22->20,
23->21,
24->22,
...
31->29,
32->30,
33->30,
34->31,
...
好吧,约翰尼莫普把它拿走了,整数除法是关键。每购买 11 张门票,您将额外获得一张免费门票。所以免费票是numberOfTickets / 11
。但由于您不赠送部分门票,因此您需要将此金额四舍五入。整数除法正是这样做的(至少对于正数是这样,但不想混淆)。
My problem is that when the user enters 11 tickets he gets one free, the eleventh ticket, but when he enters more than eleven he still has to pay for the eleventh ticket.
更改为仅在有 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;
}
我假设我们每购买 10 张门票就可获得一张免费门票(基于这部分代码:per 10 1 gratis)。所以如果我们买10张票,我们得到11张。如果我们买11张,我们得到12张。如果我们买20张,我们得到22张。
这是错误的:
if(ticketsTotalPrice % 11 == 0)
就算我们把这个场景简化到极致,免费赠送十一号票,也是不行的。买11张就送一张!
你需要做的是计算客户购买的所有门票的价格,然后检查他购买的门票(没有剩余)的十的倍数。然后从总数中减去正确的数量。这样,当他购买 44 张票时,他将支付 44 - 4 = 40 张票。
when the user enters 11 tickets he gets one free, the eleventh ticket,
最好每10张赠用户1张。所以如果用户输入 10 将得到 11。如果输入 11 将得到 12 等等...
int freeTickets = amountTickets / 10; //<< will give 1 free ticket for each 10 tickets
int ticketsTotalPrice = (amountTickets + freeTickets) * priceTicket;
如果你想给每个 11
免费票,你可以将票数除以 11
。
价格公式为(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票;
容易遍历每个:
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 = 0; //amountTickets * priceTicket;
//if(ticketsTotalPrice % 11 == 0)
//{
// ticketsTotalPrice -= priceTicket;
//}
for(int i = 1; i <= amountTickets; i++)
{
if(i % 11 != 0)
{
ticketsTotalPrice += priceTicket;
}
}
string ticketsTotalPriceStr = ticketsTotalPrice.ToString();
Console.WriteLine("\n\nU heeft "+amountTickets +" tickets gekozen, dit kost " +ticketsTotalPriceStr);
}
这种情况下的数学计算比使用循环更直接。我建议在线查找 ticketTotalPrice。
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 -
(amountTickets / 10 * priceTicket);
string ticketsTotalPriceStr = ticketsTotalPrice.ToString();
Console.WriteLine("\n\nU heeft "+amountTickets +" tickets gekozen, dit kost " +
ticketsTotalPriceStr);
}
我不得不计算一定数量的门票价格,比如主题公园。 门票的价格和数量必须由用户给出,但这不是我的问题。 我的问题是,当用户输入 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);
}
ticketsTotaalPrijs % 11 == 0
仅考虑用户购买 11 的倍数门票时的情况,即 11、22、33、...
在这些情况下,您可以将金额正好减少一个票价,因此只有 10、21、32、...
你需要重新考虑这部分。既然是作业,就不细说了,既然是这个,大家应该去了解一下。
如果我不知道更多,我会开始列举不同的情况,然后尝试找到一个规律。我想它应该是这样的: 左订票,右票支付:
1->1, 2->2, ... 9->9, 10->10, 11->10,
12->11, 13->12, ... 20->19, 21->20, 22->20,
23->21, 24->22, ... 31->29, 32->30, 33->30,
34->31, ...
好吧,约翰尼莫普把它拿走了,整数除法是关键。每购买 11 张门票,您将额外获得一张免费门票。所以免费票是numberOfTickets / 11
。但由于您不赠送部分门票,因此您需要将此金额四舍五入。整数除法正是这样做的(至少对于正数是这样,但不想混淆)。
My problem is that when the user enters 11 tickets he gets one free, the eleventh ticket, but when he enters more than eleven he still has to pay for the eleventh ticket.
更改为仅在有 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;
}
我假设我们每购买 10 张门票就可获得一张免费门票(基于这部分代码:per 10 1 gratis)。所以如果我们买10张票,我们得到11张。如果我们买11张,我们得到12张。如果我们买20张,我们得到22张。
这是错误的:
if(ticketsTotalPrice % 11 == 0)
就算我们把这个场景简化到极致,免费赠送十一号票,也是不行的。买11张就送一张!
你需要做的是计算客户购买的所有门票的价格,然后检查他购买的门票(没有剩余)的十的倍数。然后从总数中减去正确的数量。这样,当他购买 44 张票时,他将支付 44 - 4 = 40 张票。
when the user enters 11 tickets he gets one free, the eleventh ticket,
最好每10张赠用户1张。所以如果用户输入 10 将得到 11。如果输入 11 将得到 12 等等...
int freeTickets = amountTickets / 10; //<< will give 1 free ticket for each 10 tickets
int ticketsTotalPrice = (amountTickets + freeTickets) * priceTicket;
如果你想给每个 11
免费票,你可以将票数除以 11
。
价格公式为(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票;
容易遍历每个:
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 = 0; //amountTickets * priceTicket;
//if(ticketsTotalPrice % 11 == 0)
//{
// ticketsTotalPrice -= priceTicket;
//}
for(int i = 1; i <= amountTickets; i++)
{
if(i % 11 != 0)
{
ticketsTotalPrice += priceTicket;
}
}
string ticketsTotalPriceStr = ticketsTotalPrice.ToString();
Console.WriteLine("\n\nU heeft "+amountTickets +" tickets gekozen, dit kost " +ticketsTotalPriceStr);
}
这种情况下的数学计算比使用循环更直接。我建议在线查找 ticketTotalPrice。
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 -
(amountTickets / 10 * priceTicket);
string ticketsTotalPriceStr = ticketsTotalPrice.ToString();
Console.WriteLine("\n\nU heeft "+amountTickets +" tickets gekozen, dit kost " +
ticketsTotalPriceStr);
}