|
Фокус "Определение зачеркнутой цифры"Предложите кому-либо задумать некоторое многозначное число, найти сумму цифр этого числа и отнять ее от задуманного числа. В полученной разности предложите зачеркнуть любую из цифр, отличную от нуля, и сообщить сумму остальных цифр (либо сообщить цифры этого числа). По объявленному результату вы можете назвать зачеркнутую цифру — она равна тому числу, которое надо добавить к объявленному числу, чтобы получить ближайшее число, большее, чем объявленное, и делящееся на 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$ <> ""
|