Рассчитать количество комбинаций 2xadult + 2xchild - PullRequest
0 голосов
/ 02 февраля 2009
  • сайт продажи билетов предлагает скидку на «семейные» билеты.
  • Семейный билет - 2 взрослых, 2 детей.
  • Страница продажи билетов позволяет пользователю вводить любое количество билетов для взрослых и детей.

Как узнать, как применить скидку на семейный билет, а затем оплатить все оставшиеся билеты по их соответствующей стоимости (т. Е. Билеты для взрослых стоят больше, чем детские билеты)?

Вот что у меня есть (кажется, работает, но не уверен на 100% в этом (php))

# 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;

Ответы [ 3 ]

2 голосов
/ 02 февраля 2009

Я не думаю, что ваш подход действительно работает. Предположим, у вас есть 6 взрослых и 4 детей. В этом случае ваш первый if будет правдой, и вы получите семейный билет 3 - 2 = 1. Правильный результат - два семейных билета и два билета для взрослых.

Вы хотите наименьшее количество пар, чтобы определить количество семейных билетов. Попробуйте что-то вроде этого:

$numberOfFamilyTickets = min($numAdultPairs, $numChildPairs);
$remainingAdult = $oForm->adult - 2 * $numberOfFamilyTickets;
$remainingChild = $oForm->child - 2 * $numberOfFamilyTickets;

Предполагается, что $oForm->adult и $oForm->child неотрицательны.

2 голосов
/ 02 февраля 2009

Что-то вроде этих строк (псевдокод):

adultPairs = totalAdults / 2
childPairs = totalChildren / 2

familyPairs = min(adiltPairs, childPairs)
adults = totalAdults - familyPairs * 2
children = totalChildren - familyPairs * 2
1 голос
/ 02 февраля 2009

Что-то вроде этого, возможно ..

minfamilies = min (NumberOfAdults, NumberOfChildren) / 2
RemaningAdults = NumberOfAdults - (minfamilies * 2)
RemainingChildren = NumberOfChildren - (семейные номера * 2)

РЕДАКТИРОВАТЬ: Избыточный комментарий. Приведенные выше два комментария были вполне оправданы, я только что вскочил

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...