C# 如何从我的新int值计算?
我不得不计算一定数量的门票价格,比如主题公园。 门票的价格和数量必须由用户给出,但这不是我的问题。 我的问题是,当用户输入11张票时,他会得到一张免费票,即第11张票,但当用户输入超过11张票时,他仍然需要支付第11张票的费用。有人能帮我吗 这是我的密码:C# 如何从我的新int值计算?,c#,types,count,int,C#,Types,Count,Int,我不得不计算一定数量的门票价格,比如主题公园。 门票的价格和数量必须由用户给出,但这不是我的问题。 我的问题是,当用户输入11张票时,他会得到一张免费票,即第11张票,但当用户输入超过11张票时,他仍然需要支付第11张票的费用。有人能帮我吗 这是我的密码: static void Main(string[] args) { Console.Write("Voer de prijs van de ticket in: "); int priceTicket = Convert.To
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张票,你就多得到1张免费票。所以免费票是numberOfTickets/11
。但是,既然你不提供部分门票,你就需要将这部分金额四舍五入。整数除法就是这样做的(至少对于正数,但不要混淆)
我的问题是,当用户输入11张票时,他会得到一张免费票,即第11张票,但当用户输入超过11张票时,他仍然需要支付第11张票的费用
更改它,使其仅在有11张门票时应用折扣:
int ticketsTotalPrice = amountTickets * priceTicket;
if (amountTickets == 11) {
ticketsTotalPrice -= priceTicket;
}
备选方案
如果你不是我认为你的意思,这里有一些替代方案
如果您希望第11张票都是免费的,那么您可以这样做:
int ticketsTotalPrice = (amountTickets - amountTickets / 11) * priceTicket;
int ticketsTotalPrice = amountTickets * priceTicket;
if (amountTickets % 11 == 0) {
ticketsTotalPrice -= amountTickets / 11 * priceTicket;
}
或者,如果您希望它只在门票数量可除以11时应用折扣,您可以这样做:
int ticketsTotalPrice = (amountTickets - amountTickets / 11) * priceTicket;
int ticketsTotalPrice = amountTickets * priceTicket;
if (amountTickets % 11 == 0) {
ticketsTotalPrice -= amountTickets / 11 * priceTicket;
}
我假设我们每买10张票就可以得到一张免费票(根据这部分代码:每10张1张免费票)。所以如果我们买10张票,我们会得到11张。如果我们买11,我们得到12。如果我们买20,我们得到22 这是错误的:
if(ticketsTotalPrice % 11 == 0)
即使我们最大限度地简化这个场景,并免费赠送第十一张门票,这仍然行不通。我们买了11张就可以得到一张免费票
你需要做的是计算顾客购买的所有门票的价格,然后检查他购买的10张门票(不包括剩余门票)的倍数。然后从总数中减去正确的数额。例如,当他买44张票时,他将支付44-4=40张票
当用户输入11张票时,他将获得一张免费票,即第11张票
最好每10张票给用户1张免费票。所以,如果用户输入10,将得到11。如果输入11将得到12等
int freeTickets = amountTickets / 10; //<< will give 1 free ticket for each 10 tickets
int ticketsTotalPrice = (amountTickets + freeTickets) * priceTicket;
int freeTickets=amountTickets/10// 价格公式为(总计-(总计/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);
}
static void Main(字符串[]args)
{
控制台。写入(“Voer de prijs van de ticket in:”;
int priceTicket=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“Eentticket kost€{0},-\n\n”,priceTicket);
控制台。写下(“在hoeveel的Voer票u wilt(每10 1张免费):”;
int amountTickets=Convert.ToInt32(Console.ReadLine());
int ticketsTotalPrice=0;//amountTickets*priceTicket;
//如果(票证总价%11==0)
//{
//ticketsTotalPrice-=价格机票;
//}
对于(inti=1;i来说,这种情况下的数学计算比使用循环更直接。我建议在内联中查找ticketottalprice
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、22、33等,他会得到1、2、3等免费票?你能用英文名字吗?我不明白prijsTicket
和aantalTickets
和ticketsTotaalPrijs
的意思,但我想让代码尽可能紧凑!它非常接近英语;):票价
,车票数量
,车票总价
。无论如何编辑;)是的,我在这里坐了几个小时了。无论如何我都会学的。请给我举个例子,谢谢。先生,你是个天才;)非常感谢!