ВУЗ:
Составители:
Рубрика:
54
операцией: k div 100, а исходную задачу можно решить так: h:=k div 100 mod
10.
Заметьте, что в данном решении использован прием сведения задачи к
решенной ранее.
Обобщим полученное решение на случай выделения i-й цифры числа:
1) переносим запятую влево на i-1 знак (i-я цифра становится последней в
числе);
2) находим последнюю цифру как остаток от деления на 10. Схема
решения
такова: k div 10
i-1
mod 10.
Проверим работу схемы при решении задачи нахождения четвертой цифры
в числе k=13. Получим: k div 10
3
mod 10 =0. Действительно, если записать
число с незначащими цифрами, то получим 0013, откуда следует ответ на
поставленную задачу.
Упражнение
. Обобщите первое решение (с преобразованием формы
представления числа) на случай выделения произвольной цифры.
Рассмотрим задачу нахождения первой цифры числа. Для применения
рассмотренной выше схемы нужно знать количество цифр в числе. Их можно
сосчитать (что мы научимся делать в дальнейшем), а можно воспользоваться
тем фактом, что количество цифр в положительном числе
, большем единицы,
равно целой части десятичного логарифма этого числа плюс единица. Здесь
целая часть - наибольшее целое, не превосходящее данное. Таким образом, для
нахождения первой цифры числа можно предложить такую схему: число div
10
] lg число [
. Здесь ] lg число[ обозначает целую часть логарифма числа.
Упражнение
. Найдите первую цифру числа в решении, основанном на
преобразовании его формы представления.
Пример 8.17. Присвоить целой переменной d первую цифру из дробной
части положительного вещественного числа x. Например, если x=32,597, то
d=5.
Решение. Заметим, что решение этой задачи можно получить, если
умножить заданное число на 10. В этом случае задача сведется к выделению
последней цифры
полученного произведения. Нужно еще учесть, что операция
mod применима к целому числу, поэтому произведение нужно преобразовать к
целому виду, например, отбросив дробную часть. Получаем оператор,
решающий задачу: d:=trunc(x*10) mod 10.
Возможно решение с помощью преобразования числа в строку символов. В
этом случае в строке нужно найти позицию точки и выделить следующую за
ней
цифру. Получаем такой фрагмент:
var x:real; { заданное число }
d:integer; { первая цифра дробной части заданного числа }
s:string; { число, представленное в виде строки символов }
begin str(x,s); { преобразовали число в строку 32.597 -> '32.597' }
d:=copy(s,pos('.',s)+1,1) { выделили нужную цифру }
end.
54
операцией: k div 100, а исходную задачу можно решить так: h:=k div 100 mod
10.
Заметьте, что в данном решении использован прием сведения задачи к
решенной ранее.
Обобщим полученное решение на случай выделения i-й цифры числа:
1) переносим запятую влево на i-1 знак (i-я цифра становится последней в
числе);
2) находим последнюю цифру как остаток от деления на 10. Схема решения
такова: k div 10i-1 mod 10.
Проверим работу схемы при решении задачи нахождения четвертой цифры
в числе k=13. Получим: k div 103 mod 10 =0. Действительно, если записать
число с незначащими цифрами, то получим 0013, откуда следует ответ на
поставленную задачу.
Упражнение. Обобщите первое решение (с преобразованием формы
представления числа) на случай выделения произвольной цифры.
Рассмотрим задачу нахождения первой цифры числа. Для применения
рассмотренной выше схемы нужно знать количество цифр в числе. Их можно
сосчитать (что мы научимся делать в дальнейшем), а можно воспользоваться
тем фактом, что количество цифр в положительном числе, большем единицы,
равно целой части десятичного логарифма этого числа плюс единица. Здесь
целая часть - наибольшее целое, не превосходящее данное. Таким образом, для
нахождения первой цифры числа можно предложить такую схему: число div
10] lg число [. Здесь ] lg число[ обозначает целую часть логарифма числа.
Упражнение. Найдите первую цифру числа в решении, основанном на
преобразовании его формы представления.
Пример 8.17. Присвоить целой переменной d первую цифру из дробной
части положительного вещественного числа x. Например, если x=32,597, то
d=5.
Решение. Заметим, что решение этой задачи можно получить, если
умножить заданное число на 10. В этом случае задача сведется к выделению
последней цифры полученного произведения. Нужно еще учесть, что операция
mod применима к целому числу, поэтому произведение нужно преобразовать к
целому виду, например, отбросив дробную часть. Получаем оператор,
решающий задачу: d:=trunc(x*10) mod 10.
Возможно решение с помощью преобразования числа в строку символов. В
этом случае в строке нужно найти позицию точки и выделить следующую за
ней цифру. Получаем такой фрагмент:
var x:real; { заданное число }
d:integer; { первая цифра дробной части заданного числа }
s:string; { число, представленное в виде строки символов }
begin str(x,s); { преобразовали число в строку 32.597 -> '32.597' }
d:=copy(s,pos('.',s)+1,1) { выделили нужную цифру }
end.
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »
