• Решите пожалуйста первую задачу
    Желательно на C и C++

    question img

Ответы 6

  • Необходимо добавить условие, которое будет говорить, что сумма двух собираемых вещей(если мы собираем, например карандаши и блокноты), должна быть больше чем кол-во оставшейся вещи(получается, шоколада). В противном случае, получится, что будет максимально отрабатывать один оператор ветвления, а остальные будут работать уже по тому кол-ву, что осталось.
    • Автор:

      luke1zbn
    • 5 лет назад
    • 0
  • Попробую на примере. Мы вводим 4 4 4(4к, 4б, 4ш). Если не включать доп. условие, о котором я пишу выше, то получится, что будет работать только 1 оператор ветвления. Вот результат:4 4 4 - изначально3 3 4 - 1 подарок2 2 4 - 2 подарок1 1 4 - 3 подарок0 0 4 - 4 подароки на этом всё. 4 шоколадки так и останутся. А теперь мы добавим условие, чтобы сумма собираемых была больше кол-ву оставшейся.
  • 4 4 4 - изначально3 3 4 - 1 подарок2 2 4 - 2 подарок. Здесь проверяестся 2+2 = 4, но оно не больше чем 4 шоколадки. значит собираем другой подарок2 1 3 - 3 подарок. Теперь также 2+1 = 3, оно не больше чем 3 шоколадки. значит собираем снова другой1 1 2 - 4 подарок. аналогичная ситуация1 0 1 - 5 подарок0 0 0 - 6 подарокИ в итоге, мы получаем 6 подарков. То самое макс. кол-во, о котором говорилось.
  • Я надеюсь, более менее понятно стало. Если ты, конечно, именно об этом просил)
    • Автор:

      douglas71
    • 5 лет назад
    • 0
  • А для чего нам это условие в принципе? И откуда оно вытекает?
    • Автор:

      bongo
    • 5 лет назад
    • 0
  • #include "iostream"

    using namespace std;

    int main(){

    int a, b, c;

    int x = 0, y = 0, z = 0;

    cin >> a >> b >> c;

    int amount = a + b + c;

    while(amount > 0){

     if(b != 0 && c != 0 && a < b + c){

      x += 1;

      b -= 1; c -= 1;

     }

     if(a != 0 && c != 0 && b < a + c){

      y += 1;

      a -= 1; c -= 1;

     }

     if(a != 0 && b != 0 && c < a + b){

      z += 1;

      a -= 1; b -= 1;

     }

     amount -= 2;

    }

    cout << x << " " << y << " " << z << endl;

    return 0;

    }

    answer img
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years