首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算2×成人+2×儿童组合的数值

计算2×成人+2×儿童组合的数值
EN

Stack Overflow用户
提问于 2009-02-02 09:21:48
回答 3查看 196关注 0票数 0
  • a票务网站提供“家庭”票的折扣。
  • a家庭票是2名成人,2名儿童。
  • 售票页面允许用户输入任意数量的成人和儿童票。

我如何计算如何申请家庭票折扣,然后收取所有剩余的门票的相关费用(即成人票的费用高于儿童票) ?

下面是我到目前为止所得到的成果(看起来很有效,但不是100%的自信(php))

代码语言:javascript
运行
复制
# Work out how many pairs of people there are
$numAdultPairs = floor($oForm->adult / 2);
$numChildPairs = floor($oForm->child / 2);

# work out the number of matching pairs for child / adult
if ( $numAdultPairs > $numChildPairs ) {
    $numberOfFamilyTickets = $numAdultPairs - $numChildPairs;
} else if ( $numAdultPairs < $numChildPairs ){
    $numberOfFamilyTickets = $numChildPairs - $numAdultPairs;
} else if ( $numAdultPairs == $numChildPairs ) {
    $numberOfFamilyTickets = $numAdultPairs;
}

# work out the remaining tickets required
$remainingAdult = $oForm->adult % 2;
$remainingChild = $oForm->child % 2;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-02 09:35:13

我不认为你的方法真的有效。假设你有6个成年人和4个孩子。在这种情况下,您的第一个if将是真的,您将得到3 - 2 = 1家庭票。正确的结果是两张家庭票和两张成人票。

您想要最低的配对数来确定家庭票的数量。试着做这样的事情:

代码语言:javascript
运行
复制
$numberOfFamilyTickets = min($numAdultPairs, $numChildPairs);
$remainingAdult = $oForm->adult - 2 * $numberOfFamilyTickets;
$remainingChild = $oForm->child - 2 * $numberOfFamilyTickets;

假设您确保$oForm->adult$oForm->child是非负的。

票数 2
EN

Stack Overflow用户

发布于 2009-02-02 09:27:53

类似的东西(伪代码):

代码语言:javascript
运行
复制
adultPairs = totalAdults / 2
childPairs = totalChildren / 2

familyPairs = min(adiltPairs, childPairs)
adults = totalAdults - familyPairs * 2
children = totalChildren - familyPairs * 2
票数 2
EN

Stack Overflow用户

发布于 2009-02-02 09:51:37

也许是这样..。

最小族= min(NumberOfAdults,NumberOfChildren)/2

RemaningAdults = NumberOfAdults -(最小族* 2)

RemainingChildren = NumberOfChildren -(最小族* 2)

编辑:多余的评论。以上两句话都很有道理,我只是插嘴说:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/502657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档