C# 如何从我的新int值计算?

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

我不得不计算一定数量的门票价格,比如主题公园。 门票的价格和数量必须由用户给出,但这不是我的问题。 我的问题是,当用户输入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张票,你就多得到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
的意思,但我想让代码尽可能紧凑!它非常接近英语;):
票价
车票数量
车票总价
。无论如何编辑;)是的,我在这里坐了几个小时了。无论如何我都会学的。请给我举个例子,谢谢。先生,你是个天才;)非常感谢!