Автор Тема: Помогите с задачей на оператор цикла с пост условием!  (Прочитано 2304 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Masha16

  • Новичок
  • *
  • Сообщений: 10
    • Просмотр профиля
Компьютер загадал целое число в диапазоне от 1 до 20. Игрок должен угадать задуманное число за 5 попыток. Игра продолжается до тех пор, пока игрок не угадал число или не исчерпал имеющиеся у него попытки. Игрок выигрывает в том случае, если он угадал число с любой из 5 попыток и проигрывает, если попытки закончились, а он так и не угадал число.

Напишите пожалуйста решение. Желательно с комментариями!
« Последнее редактирование: 22 Октября 2011, 00:25:09 от Asix »

Оффлайн holloloh

  • Пользователь
  • **
  • Сообщений: 40
    • Просмотр профиля
150 рублей и будет и код, и комментарии, и возможно даже графический интерфейс, если на дельфях...
А так только общее описание
1)кладем число, сгенерированное генератором случайных чисел в переменную
2)заводим переменную leftTryes, в начале равную 5
3)пишем цикл while с условием выхода LeftTryes > 0
4)читаем с клавиатуры цифру, если она совпадает, выводим "YAHOO, YOU ARE WINNAR!!!!!!!11!" и выходим из программы/предлагаем сыграть ещё
5)если не совпадает выводим сообщение, что число неправильное и уменьшаем leftTryes на единицу
6)если LeftTryes == 0 выходим из цикла, выводим "YOU LOSE!" и закрываем программу/предлагаем сыграть ещё
всио.

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Я так думаю, что в основе решения должен  лежать метод деления пополам. Т.е. вначале вы называете число 10 (середину между 0 и 20), если ответ меньше то выбираем отрезок от 0 до 9 и его половину, если больше  - отрезок о 11 до 20. Только так можно гарантированно угадать число за 5 попыток даже за 4 (т.к. 2^4=16<20)

Оффлайн holloloh

  • Пользователь
  • **
  • Сообщений: 40
    • Просмотр профиля
Ну, про это в условии ничего нет, а свои условия при сдачи программы лучше не придумывать ибо наказуемо    ;)