Предмет: Информатика, автор: nicka2213232

С++ GuessException
В этой задаче вам предстоит отгадать число, загаданное жюри.
Жюри загадало число от 1 до 100 включительно.
Требуется отгадать его за неболее чем 30 попыток.
А именно, есть объект типа BlackBox
class BlackBox {
public:
void GuessNumber(int x) const;
};
В этом объекте хранится число. У него есть единственный публичный метод GuessNumber. Этот
объект будет передан вам по константной ссылке.
Пусть жюри загадало число y от 1 до 100. Если вызвать метод GuessNumber у объекта BlackBox с
аргументом x, то может произойти одна из 3 ситуаций:
1. y < x. Тогда будет брошено исключение типа ExceptionLess
2. y == x. Тогда будет брошено исключение типа ExceptionEqual
3. y > x. Тогда будет брошено исключение типа ExceptionGreater
Все исключения будут подключены к вашему коду, а задаются они так:
class ExceptionLess : public std::exception {
};
class ExceptionGreater : public std::exception {
};
class ExceptionEqual : public std::exception {
};
Также к вашему коду будет добавлена реализация самого класса BlackBox, однако его код не
раскрывается.
Ваша задача написать функцию
int guess(const BlackBox& box)
Она принимает объект типа BlackBox, а возвращает загаданное число. У вас есть неболее 30
попыток, чтобы отгадать это число, иначе рещение получит вердикт RE
В систему отправляйте лишь код функции guess и необходимые библиотеки, всё остальное будет
подключено автоматически

Ответы

Автор ответа: DenysPablo
3

Ответ:

int guess(const BlackBox& box) {

   int left = 1, right = 100;

   int middle;

   for (int i = 0; i < 30; ++i) {

       middle = (left + right) / 2;

       try {

           box.GuessNumber(middle);

           return middle;

       }

       catch (ExceptionLess& e) {

           right = middle - 1;

       }

       catch (ExceptionGreater& e) {

           left = middle + 1;

       }

       catch (ExceptionEqual& e) {

           return middle;

       }

   }

   throw std::runtime_error("Too many attempts");

}

Объяснение:

Похожие вопросы
Предмет: Психология, автор: calamaria393
Задача №3

У старших класах однієї зі шкіл класними керівниками було проведене
анкетування щодо визначення ідеалу молодих людей. Результати опитування засвідчили,
що значна частина старшокласників (70%) втратили свої ідеали. Разом з тим, на питання
"Ваш улюблений герой, взірець, ідеал?", вони назвали героїв телесеріалів (35%), сильну
особистість американізованого типу (30%), героїв мультфільмів (20%), героїв
літературних творів (10%). Старшокласники, водночас, зазначили, що духовних і
моральних якостей їм допомагають набути батьки, родичі, друзі, вчителі. Отримані
тенденції співпадають з результатами наукових досліджень.
Розкрийте суперечності морального виховання старшокласників і пов'язані з ними
недоліки у їх духовному розвитку.
Назвіть доцільні методи і прийоми морального виховання щодо формування
гуманістичного ідеалу юнацтва.

Задача №4

Вчитель біології має достатній досвід педагогічної роботи. Проте з учнями не може
знайти спільну мову. Він вважає, що нічого з учнями панькатися, грати в якусь
демократію. Треба суворо вимагати знань. Вчитель грубо розмовляє з учнями, принижує
їх гідність, може висміяти учнів за невдалу відповідь, нерідко знижує оцінку з предмету за
погану поведінку, зневажливо ставиться до нових ідей. Тому учні не люблять уроків
біології і намагаються уникнути спілкування з цим учителем.
Проаналізуйте причини ситуації, що склалася.
Назвіть доцільні способи встановлення стосунків між вчителем та учнями на
основі педагогіки співробітництва.
Предмет: Алгебра, автор: dichlukshenya
Предмет: География, автор: Ijbar