Путать с тем, как сравнить 1 int с 3 другими и объявить один меньше, чем три других - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь реализовать код, который кажется простым, но я все еще упускаю суть.Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь взять свой бюджет и сравнить его с ценами на товары (p. ..).Если есть ТОЛЬКО ОДИН пункт, который меньше моего бюджета, я хочу, чтобы он распечатал это.Если имеется более одного элемента, я хочу напечатать, что имеется более одного элемента.Это будет введено пользователем, поэтому предположим, что они вводят следующие числа для цены элемента, 40, 110, 200. Я хочу, чтобы в операторе if говорилось, что бюджет ограничен только одним элементом, но если 40 был 120Напечатайте это НЕТ Пункт имеет право с моим бюджетом.Вот что я получил:

int p1, p2, p3, budget;
p1 = 40;
p2 = 110;
p3 = 200;
budget = 100;

    if((budget>p1 || bugdget>p2 || budget>p3) && (budget<p1+p2 || budget<p1+p3 || buget<p2+p3))
        {
            printf("\n(3) Only one of the is less than or equal to your budget.");
        }
    else
        {
            printf("\n(3) More than one of the items are cheaper than your budget or the items are all more expensive.");

        }

Опять же, я хочу, чтобы он вывел правильное утверждение.Если только один int меньше, чем бюджет, то я хочу, чтобы он вывел, что только один int меньше, чем бюджет, иначе он должен вывести оператор else выше.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Если есть ТОЛЬКО ОДИН пункт, который меньше моего бюджета, я хочу, чтобы он распечатал это.

Добавьте сравнения и включите эту сумму.

//if((budget>p1 || bugdget>p2 || budget>p3) && (budget<p1+p2 || budget<p1+p3 || buget<p2+p3))

switch ((p1<budget) + (p2<budget) + (p3<budget)) {
  case 1:  printf("\n(3) Only one of the is less than or equal to your budget."); break;
  case 0:  printf("\nNO Item is eligible."); break;
  default: printf("\n(3) More than one of the items are cheaper than your budget ....");
}

Край: цель ОП "меньше моего бюджета".Я ожидал бы «меньше или равно моему бюджету».

0 голосов
/ 15 февраля 2019

Если вам нужно подсчитать, сколько элементов по отдельности попадает в бюджет, я бы предложил поместить элементы в массив и использовать цикл для проверки.Например,

int checkItems(int budget, int* items, int itemCount)
{
    int count = 0;
    for (int i=0; i<itemCount; ++i)
    {
        if (items[i] <= budget)
           ++count;
    }
    return count;
}

int main()
{
    //populate your array of items
    int items[3] = { 40, 110, 120 };
    int count = 0;
    count = checkItems(100, items, 3);
    if (count == 1)
        printf("\n(3) Only one of the is less than or equal to your budget.");
    else
        printf("\n(3) More than one of the items are cheaper than your budget or the items are all more expensive.");
}

Однако, если вы хотите посмотреть, подходят ли несколько предметов, добавленных вместе, под бюджет, то вы столкнетесь с проблемой ранца .

* 1007.* Редактировать:

Версия без массива:

int main()
{
    int p1 = 40, p2 = 110, p3 = 200;
    int budget = 100;
    int count = 0;

    if (p1 <= budget) ++count;
    if (p2 <= budget) ++count;
    if (p3 <= budget) ++count;

    if (count == 1) .... as above
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...