gpt4 book ai didi

c - 使用变量查找剩余金额

转载 作者:行者123 更新时间:2023-11-30 17:43:22 26 4
gpt4 key购买 nike

我接受了有限的数量,并将它们分配给一个数组......完成了。

例如...我只有 100 张抽奖券。所以,有多少人买票,我只能分配100张票。有的人可能买19张,有的人可能买1张。但是到了100张的时候,我不知道如何停下来查看,只把剩下的票数给那个人。

这是一些代码。

我的函数调用:

int raffle_person, raffle_ticket, person;
fscanf(ifp, "%d", &raffle_ticket);
fscanf(ifp, "%d", &raffle_person);


profit+= Raffle(raffle_person,raffle_ticket, number_raffle_items,raffle_price, num_raffle_ticket);
num_raffle_ticket = num_raffle_ticket - raffle_ticket;

}

基本上,它从文件中扫描信息,然后调用该函数(忽略利润),然后获取门票数量并从该人购买的金额中减去它。

这是函数:

float Raffle (int person, int amt_raffle_tickets, int
num_raffle_prize,float price_of_raffle_ticket, int num_raffle_ticket
)
{
int i; float profit = 0;

if (num_raffle_ticket <= amt_raffle_tickets){

if (num_raffle_ticket - amt_raffle_tickets >0){
int k;
k = amt_raffle_tickets + num_raffle_ticket;

printf("RAFFLE TICKETS %d - %d given to PERSON %d\n", raffle_index, k + amt_raffle_tickets -1 , person);
}

printf("NO rffle tikes given to %d\n" , person); return 0; } else if
(num_raffle_ticket < amt_raffle_tickets){

} printf("RAFFLE TICKETS %d - %d given to PERSON %d\n", raffle_index,
raffle_index + amt_raffle_tickets -1 , person);

for (i=0; i<amt_raffle_tickets; i++){
myRaffle.raffle_ticket[raffle_index] = person; profit+= price_of_raffle_ticket;
raffle_index++;

}

return profit;
}

首先 if 语句检查该人购买的金额是否已经更大...然后停止该功能...(有效)

但是我遇到了问题,因为我不知道如何将剩余的门票数量分配给一个人。比如,如果我已经分配了 96 张票,我如何找到与 100 张票的差异,然后只将 4 张票分配给这个人?

最佳答案

这是您最初以更正统的方式编写的函数风格:

float Raffle(int person, int amt_raffle_tickets, int num_raffle_prize,
float price_of_raffle_ticket, int num_raffle_ticket)

amt_raffle_tickets 参数是请求的门票数量;num_raffle_ticket 参数是可用门票的数量。

{
int i;
float profit = 0;

if (num_raffle_ticket <= amt_raffle_tickets)
{
if (num_raffle_ticket - amt_raffle_tickets > 0)
{
int k;
k = amt_raffle_tickets + num_raffle_ticket;
printf("RAFFLE TICKETS %d - %d given to PERSON %d\n",
raffle_index, k + amt_raffle_tickets - 1, person);
}
printf("NO raffle tickets given to %d\n", person);
return 0;

这个printf()return看起来像是放错了地方,也许意味着进入 else if 子句中的空语句 block 。但是,永远不会输入 else if block ,因为条件被上面的 if 条件覆盖,这就留下了一个问题:printf()return 应该这样做。

    }
else if (num_raffle_ticket < amt_raffle_tickets)
{
}
printf("RAFFLE TICKETS %d - %d given to PERSON %d\n", raffle_index,
raffle_index + amt_raffle_tickets -1, person);

for (i = 0; i < amt_raffle_tickets; i++)
{
myRaffle.raffle_ticket[raffle_index] = person;
profit+= price_of_raffle_ticket;
raffle_index++;
}

return profit;
}

不幸的是,变量raffle_index没有声明,所以我们可以假设它是一个全局变量,并且考虑到它的打印方式必须是int raffle_index。同样,您的 myRaffle 结构也不是都记录在案,这又让人很难知道发生了什么。但是,我相信该结构应该具有以下值raffle_index。从未使用过参数 num_raffle_prize

我已经解决了未指定的部分并提出了工作代码。它从标准输入读取,而不是从文件读取,因为我很懒。

固定代码的运行示例:

$ ./raffle
13 3
RAFFLE TICKETS 0 - 12 given to PERSON 3
15 2
RAFFLE TICKETS 13 - 27 given to PERSON 2
17 231
RAFFLE TICKETS 28 - 44 given to PERSON 231
Ticket 0 for person 3
Ticket 1 for person 3
Ticket 2 for person 3
Ticket 3 for person 3
Ticket 4 for person 3
Ticket 5 for person 3
Ticket 6 for person 3
Ticket 7 for person 3
Ticket 8 for person 3
Ticket 9 for person 3
Ticket 10 for person 3
Ticket 11 for person 3
Ticket 12 for person 3
Ticket 13 for person 2
Ticket 14 for person 2
Ticket 15 for person 2
Ticket 16 for person 2
Ticket 17 for person 2
Ticket 18 for person 2
Ticket 19 for person 2
Ticket 20 for person 2
Ticket 21 for person 2
Ticket 22 for person 2
Ticket 23 for person 2
Ticket 24 for person 2
Ticket 25 for person 2
Ticket 26 for person 2
Ticket 27 for person 2
Ticket 28 for person 231
Ticket 29 for person 231
Ticket 30 for person 231
Ticket 31 for person 231
Ticket 32 for person 231
Ticket 33 for person 231
Ticket 34 for person 231
Ticket 35 for person 231
Ticket 36 for person 231
Ticket 37 for person 231
Ticket 38 for person 231
Ticket 39 for person 231
Ticket 40 for person 231
Ticket 41 for person 231
Ticket 42 for person 231
Ticket 43 for person 231
Ticket 44 for person 231
Profit = 90.00
$

工作代码

主要变量重命名仍在继续。该节目是关于抽奖的,所以确实没有必要到处重复抽奖。我没有完全删除它,但我确实重命名了很多变量。

#include <assert.h>
#include <stdio.h>

enum { MAX_TICKETS = 100 };
static int raffle_index = 0;
static struct
{
int raffle_ticket[MAX_TICKETS];
} myRaffle;
static float Raffle(int person, int req_tickets,
float ticket_price, int avail_tickets);

int main(void)
{
FILE *ifp = stdin;
int raffle_person;
int raffle_ticket;
float raffle_price = 2.00;
int avail_tickets = MAX_TICKETS;
float profit = 0.0;

while (avail_tickets > 0 &&
fscanf(ifp, "%d", &raffle_ticket) == 1 &&
fscanf(ifp, "%d", &raffle_person) == 1)
{
profit += Raffle(raffle_person, raffle_ticket,
raffle_price, avail_tickets);
avail_tickets = avail_tickets - raffle_ticket;
}

for (int i = 0; i < raffle_index; i++)
printf("Ticket %d for person %d\n", i, myRaffle.raffle_ticket[i]);

printf("Profit = %.2f\n", profit);
return 0;
}

float Raffle(int person, int req_tickets,
float ticket_price, int avail_tickets)
{
int i;
float profit = 0;

assert(avail_tickets > 0);
if (avail_tickets < req_tickets)
req_tickets = avail_tickets;
printf("RAFFLE TICKETS %d - %d given to PERSON %d\n",
raffle_index, raffle_index + req_tickets - 1, person);

for (i = 0; i < req_tickets; i++)
{
myRaffle.raffle_ticket[raffle_index++] = person;
profit+= ticket_price;
}

return profit;
}

改天,我们将讨论重复添加 float 的明智之举点数转换为另一个 float ;事情不是这样的应该完成,但对于手头的代码来说已经足够了。

关于c - 使用变量查找剩余金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20252107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com