Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №21/2008


В мир информатики
Games.exe

Фокус "Определение зачеркнутой цифры"

Предложите кому-либо задумать некоторое многозначное число, найти сумму цифр этого числа и отнять ее от задуманного числа. В полученной разности предложите зачеркнуть любую из цифр, отличную от нуля, и сообщить сумму остальных цифр (либо сообщить цифры этого числа). По объявленному результату вы можете назвать зачеркнутую цифру — она равна тому числу, которое надо добавить к объявленному числу, чтобы получить ближайшее число, большее, чем объявленное, и делящееся на 9. Заметим, что если объявленное число уже делится на 9, значит, была зачеркнута цифра 9.

Пример.

алг Зачеркнутая_цифра_2

нач цел результат, сумма_цифр, последняя_цифра

цел ближайшее_кратное_9, зачеркнутая_цифра

вывод нс, "Сейчас я покажу фокус"

|Приостановка программы до нажатия

|любой клавиши

нц

¦

кц_при inkey()<>""

вывод нс, "Задумайте любое число, большее 20"

|Приостановка программы до нажатия

|любой клавиши

вывод нс, "Найдите сумму его цифр"

|Приостановка программы до нажатия

|любой клавиши

вывод нс, "Вычтите ее из задуманного числа"

|Приостановка программы до нажатия любой

|клавиши

вывод "В полученной разности зачеркните"

вывод нс, "любую цифру, кроме нуля,

и запомните ее"

|Приостановка программы до нажатия

|любой клавиши

вывод нс, "Найдите сумму оставшихся цифр"

|Приостановка программы до нажатия любой

|клавиши

вывод нс, "Чему равна эта сумма цифр?"

ввод результат

|Определение и вывод ответа

Очистка_Экрана

|Находим сумму цифр полученного числа

сумма_цифр := 0

нц пока результат > 0

последняя_цифра := mod(результат, 10)

сумма_цифр := сумма_цифр + последняя_цифра

результат := div(результат, 10)

кц

если mod(сумма_цифр,9) = 0

то

зачеркнутая_цифра := 9

иначе

|Находим дополнение найденной суммы

|до ближайшего большего числа, кратного 9

ближайшее_кратное_9 :=

(div(сумма_цифр, 9) + 1) * 9

зачеркнутая_цифра :=

ближайшее_кратное_9 - сумма_цифр

все

вывод нс, "Вы зачеркнули цифру ",

зачеркнутая_цифра

кон

— где Очистка_экрана — стандартная процедура очистки экрана.

Переменные величины, используемые в программе:

результат — число, объявленное участником фокуса (сумма цифр полученного числа);

сумма_цифр — сумма цифр величины результат;

последняя_цифра — последняя цифра величины результат;

ближайшее_кратное_9 — ближайшее число, большее суммы цифр числа результат, кратное 9 (без учета случая, когда эта сумма кратна 9);

зачеркнутая_цифра — искомая цифра.

Для приостановки программы до нажатия любой клавиши в программах на других языках программирования можно также использовать оператор цикла с постусловием:

1) в языке Паскаль:

Repeat

Until KeyPressed

2) в языке Бейсик:

DO

LOOP UNTIL INKEY$ <> ""

 

TopList