Два друга петя и вася играют в игру «угадай целое число». петя задает

диапазон [x; y], а вася загадывает число из указанного диапазона. цель игры: петя

должен отгадать загаданное число, используя как можно меньше попыток. за

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

должен ответить: «больше», «меньше» или «равен» предложенный петей вариант

относительно загаданного числа. при равенстве значений игра заканчивается, и

игроки подсчитывают количество попыток. вспомнив известный алгоритм, петя стал

действовать следующим образом:

1. он предлагал число z наиболее близкое к середине отрезка[x; y],

2 в зависимости от ответа васи, петя заменял отрезок [x,y] на отрезок [x,z],

если ответ был «меньше» или [z,y] если ответ был «больше».

3. далее петя повторял действия 1 и 2, но для нового диапазона , до тех пор

пока не угадывал число.

требуется составить блок-схему алгоритма либо описать этот алгоритм на

языке, либо составить на одном из языков программирования программу,

моделирующую процесс игры и подсчитывающую количество попыток пети.

алгоритм или программу сопроводить описанием всех использованных

переменных, констант и т.п. – для каждой указать тип и для чего она предназначается.

arsigonin arsigonin    2   12.10.2019 20:45    27

Ответы
міхан міхан  28.01.2024 06:09
Алгоритм игры "угадай целое число" выглядит следующим образом:


1. Задаем начальный диапазон чисел [x; y].
2. Инициализируем счетчик попыток p с нулевым значением.
3. До тех пор, пока x не станет равным y:
1. Вычисляем середину отрезка z = (x + y) / 2.
2. Предлагаем число z Петей и увеличиваем счетчик попыток на 1.
3. Получаем ответ Васи (больше, меньше или равно).
4. Если ответ "равно", то игра заканчивается.
5. Если ответ "больше", то заменяем диапазон [x; y] на [z; y].
6. Если ответ "меньше", то заменяем диапазон [x; y] на [x; z].
4. Выводим количество попыток p на экран.

Теперь напишем программу на языке Python, которая будет моделировать процесс игры и подсчитывать количество попыток Пети.

```python
def guess_number(x, y):
p = 0 # Счетчик попыток
while x != y:
z = (x + y) // 2 # Вычисляем середину отрезка
print("Предположение Пети:", z)
p += 1 # Увеличиваем счетчик попыток на 1
answer = input("Ответ Васи (больше, меньше или равно): ")
if answer == "равно":
break
elif answer == "больше":
x = z
elif answer == "меньше":
y = z
print("Число угадано!")
print("Количество попыток:", p)


# Пример использования программы
x = int(input("Введите начало диапазона: "))
y = int(input("Введите конец диапазона: "))
guess_number(x, y)
```

В данной программе использована следующая переменная:
- p (int) - счетчик попыток, инициализируется нулевым значением и увеличивается на 1 при каждой попытке.

Также в программе используется ввод данных с клавиатуры (функция input) для ввода ответа Васи и начального и конечного значений диапазона x и y. Все остальные переменные (x, y, z, answer) являются вспомогательными и служат для хранения промежуточных значений и данных в процессе выполнения алгоритма.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика