|
Программирование >> Структурное программирование
Затем учащийся печатает ответ. Ваша программа проверяет этот ответ. Если он правильный, напечатайте Очень хорошо! и затем задайте следующий вопрос на умножение. Если ответ неправильный, напечатайте Нет. Повторите, пожалуйста, снова. и затем задавайте тот же самый вопрос повторно до получения правильного ответа. 3.36. Использование компьютеров в образовании относят к системам компьютерного обучения (ОКО). Одной из проблем среды ОКО является утомляемость учащихся. Этого можно избежать путем разнообразия компьютерных диалогов, удерживающих внимание ученика. Модифицируйте программу упражнения 3.35 так, чтобы для каждого правильного или неправильного ответов печатались разнообразные комментарии типа: Отклики на правильные ответы Очень хорошо! Отлично! Чудесная работа! Продолжайте работать так же хорошо! Отклики на неправильные ответы Нет. Попытайтесь, пожалуйста, снова. Неверно. Попытайтесь еще pas. Не опускште руки! Нет. Продолжайте ваши попытки. Используя генератор случайных чисел для выбора чисел от 1 до 4, выбирайте подходящую реплику для каждого ответа. Используйте структуру switch для представления отклика. 3.37. Большинство серьезных систем компьютерного обучения осуществляют мониторинг учащегося в течение некоторого периода времени. Решение о начале новой темы часто основывается на успехе учащегося в изучении предыдущей темы. Модифицируйте программу в упражнении 3.35 так, чтобы считать количество правильных и неправильных ответов, введенных учащимся. После того как учащийся напечатал 10 ответов, ваша программа должна посчитать процент правильных ответов. Если он ниже 75%, ваша программа должна напечатать Пожалуйста попросите срочно помощь у вашего преподавателя и закончить свою работу. 3.38. Напишите программу, которая играет в игру Угадай число следующим образом: ваша программа выбирает случайное число, которое должно быть отгадано, в диапазоне от 1 до 1000. Затем программа печатает: Мое число между 1 и 1000. Вы можете его отгадать? Пожалуйста, напечатайте вашу первую догадку. Затем игрок печатает свою первую догадку. Программа отвечает одним из следующих вариантов: 1. Отлично! Вы отгадали число! Хотели бы вы сыграть еще pas (д или н)? 2. Слишком мало. Попытайтесь снова. 3. Слишком много.Попытайтесь снова. Если догадка игрока неверна, ваша программа должна работать циклически до получения верного ответа. Программа должна говорить игроку Слишком мало или Слишком много, чтобы помочь ему угадать правильный ответ. Замечание: Техника поиска, используемая в этой задаче, называется двоичный поиск. Об этом мы подробнее поговорим в следующей задаче. 3.39. Модифицируйте программу упражнения 3.38 так, чтобы она считала количество попыток игрока отгадать число. Если это число 10 или меньше, напечатайте Или вы знаете секрет, или вы счастливчик! Если игрок отгадал число за 10 попыток, напечатайте Ага! Вы знаете секрет! Если игрок отгадывает больше чем за 10 попыток, то напечатайте Бы должны развивать свои способности! Почему отгадка не должна требовать более 10 попыток? Да потому, что каждая хорошая догадка должна исключать половину чисел. Теперь покажите, почему любое число от 1 до 1000 может быть отгадано не более чем за 10 попыток. 3.40. Напишите рекурсивную функцию power (base, exponent), которая возвращала бы значение powerP° Например, power (3, 4) = 3 * 3 * 3 * 3. Полагайте, что exponent - целое число, большее или равное 1. Подсказка: Шаг рекурсии может использовать соотношение feas/ = base baseP а завершения может иметь место, когда exponent равна 1, потому что base = base 3.41. Последовательность чисел Фибоначчи О, 1, 1, 2, 3, 5, 8, 13, 21,... начинается с О и 1 и имеет то свойство, что каждый последующий элемент является суммой двух предыдущих элементов, а) Напишите нерекурсивную функцию fibonacci (п), которая вычисляет п-е число Фибоначчи. Ь) Определите наибольшее число Фибоначчи, которое может быть напечатано в вашей системе. Модифицируйте программу части а) так, чтобы использовать double вместо int при вычислении и возвращении значения числа Фибоначчи; используйте эту модифицированную программу для повторения части Ь). 3.42. (Ханойские башни). Каждый подающий надежды исследователь в области вычислений рано или поздно должен столкнуться с некоторыми классическими задачами и Ханойские Башни (смотри рис. 3.28) - одна из наиболее известных среди них. Легенда гласит, что в одном из монастырей Дальнего Востока монахи пытались переместить стопку дисков с одного колышка на другой. Начальная стопка имела 64 диска, нанизанных на один колышек так, что их размеры последовательно уменьшались к вершине. Монахи пытались переместить эту стопку с этого колышка на второй при условии, что при каждом перемещении можно брать только один диск и больший диск никогда не должен находиться над меньшим дис- ком. Третий колышек предоставляет возможность временного размещения дисков. Считают, что когда монахи решат свою задачу, наступит конец света, так что у нас мало поводов облегчать их усилия. Рис. 3.28. Ханойские башни для случая четырех дисков Давайте предположим, что монахи пытаются переместить диски с колышка 1 на колышек 3. Мы хотим построить алгоритм, который будет печатать четкую последовательность перемещений дисков с колышка на колышек. Если бы мы пытались найти решение этой задачи обычными методами, мы быстро бы обнаружили безнадежность попыток манипуляций дисками. Но если мы решим действовать рекурсивными методами, проблема сразу становится легко разрешимой. Перемещение и дисков может быть легко представлено в терминах перемещения только п -1 диска (и следовательно рекурсивно): 1. Переместить п - 1 дисков с колышка 1 на колышек 2, используя колышек 3 как место временного размещения. 2. Переместить последний диск (наибольший) с колышка 1 на колышек 3. 3. Переместить п - 1 дисков с колышка 2 на колышек 3, используя колышек 1 как место временного размещения. Этот процесс завершается, когда последняя задача будет состоять из перемещения п = 1 дисков, т. е. окажется базовой задачей. Она соответствует тривиальному перемещению диска без использования места временного размещения. Напишите программу решения задачи о Ханойских башнях. Используйте рекурсивную функцию с четырьмя параметрами: 1. Количество дисков, которое должно быть перемещено. 2. Колышек, на который эти диски нанизаны первоначально. 3. Колышек, на который эта группа дисков должна быть перемещена. 4. Колышек, используемый как место временного размещения.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |