ВУЗ:
Составители:
Рубрика:
55
Чтобы выделить i-ю цифру дробной части можно предложить следующую
схему: trunc(число * 10
i
) mod 10. Здесь нужно помнить, что правильный ответ
будет получен только для хранимых в памяти компьютера цифр дробной части.
Упражнение
. Напишите фрагмент программы для выделения i-й цифры
дробной части числа с помощью преобразования его в строку символов.
Пример 8.18. Целой переменной s присвоить сумму цифр трехзначного
целого числа k.
Решение. Воспользуемся схемой для общего случая, тогда третья цифра
может быть найдена так: k div 100 mod 10, вторая - k div 10 mod 10, последняя -
k div 1 mod 10. Обратите внимание, что получились одинаково устроенные
выражения,
отличающиеся только первым делителем. Это значит, что для
нахождения каждой цифры нужно выполнить одинаковые операции, что
является основой для построения циклов (рассматриваются дальше). Впрочем,
последняя цифра может быть определена как k mod 10, а первая - как k div 100.
Тогда оператор присваивания, решающий задачу, будет иметь вид s:=k div
100+k div 10 mod 10+k mod 10.
Упражнение. Решите эту задачу с помощью преобразования числа в
строку.
Пример 8.19. Идет k-я секунда суток. Написать операторы, выясняющие,
сколько полных часов (h) и полных минут (m) прошло к данному моменту.
Решение. Вспомним, что 1 час равен 60 минутам,
1 минута равна 60 секундам.
Пусть, например, k=13257. Узнаем сколько полных часов прошло: h = 13257
div (60*60) = 3. После этой операции осталось: 13257 mod (60*60)=2457
секунд.
Для выделения полных минут остаток разделим на 60: m=2457 div 60=40.
Остаток от деления 2457 на 60 покажет количество оставшихся секунд: 2457
mod 60=57. Полностью решение можно записать так:
var k:integer; { исходное данное - количество секунд }
h:integer; { прошло количество часов }
m:integer; { прошло количество минут }
s:integer; { прошло количество секунд }
begin h:=k div 3600;
m:=k mod 3600 div 60;
s:=k mod 3600 mod 60
end.
Обобщим решение на следующий случай (предложен Г.Остером):
1 кукаляка равна A мукака,
1 мукака равна
В бисяка,
1 бисяка равна С пампукским хрюрям,
1 пампукская хрюря равна D мамурикам.
Имеется E мамуриков. Требуется определить, сколько полных кукаляк(v),
мукак(w), бисяк(x) и пампукских хрюрь(y) имеется.
Поскольку структура (устройство) данных решаемой задачи похожа на
структуру данных предыдущей задачи, то и их решения (алгоритмы) должны
совпадать, так как это фактически одна
и та же задача.
55
Чтобы выделить i-ю цифру дробной части можно предложить следующую
схему: trunc(число * 10i) mod 10. Здесь нужно помнить, что правильный ответ
будет получен только для хранимых в памяти компьютера цифр дробной части.
Упражнение. Напишите фрагмент программы для выделения i-й цифры
дробной части числа с помощью преобразования его в строку символов.
Пример 8.18. Целой переменной s присвоить сумму цифр трехзначного
целого числа k.
Решение. Воспользуемся схемой для общего случая, тогда третья цифра
может быть найдена так: k div 100 mod 10, вторая - k div 10 mod 10, последняя -
k div 1 mod 10. Обратите внимание, что получились одинаково устроенные
выражения, отличающиеся только первым делителем. Это значит, что для
нахождения каждой цифры нужно выполнить одинаковые операции, что
является основой для построения циклов (рассматриваются дальше). Впрочем,
последняя цифра может быть определена как k mod 10, а первая - как k div 100.
Тогда оператор присваивания, решающий задачу, будет иметь вид s:=k div
100+k div 10 mod 10+k mod 10.
Упражнение. Решите эту задачу с помощью преобразования числа в
строку.
Пример 8.19. Идет k-я секунда суток. Написать операторы, выясняющие,
сколько полных часов (h) и полных минут (m) прошло к данному моменту.
Решение. Вспомним, что 1 час равен 60 минутам,
1 минута равна 60 секундам.
Пусть, например, k=13257. Узнаем сколько полных часов прошло: h = 13257
div (60*60) = 3. После этой операции осталось: 13257 mod (60*60)=2457 секунд.
Для выделения полных минут остаток разделим на 60: m=2457 div 60=40.
Остаток от деления 2457 на 60 покажет количество оставшихся секунд: 2457
mod 60=57. Полностью решение можно записать так:
var k:integer; { исходное данное - количество секунд }
h:integer; { прошло количество часов }
m:integer; { прошло количество минут }
s:integer; { прошло количество секунд }
begin h:=k div 3600;
m:=k mod 3600 div 60;
s:=k mod 3600 mod 60
end.
Обобщим решение на следующий случай (предложен Г.Остером):
1 кукаляка равна A мукака,
1 мукака равна В бисяка,
1 бисяка равна С пампукским хрюрям,
1 пампукская хрюря равна D мамурикам.
Имеется E мамуриков. Требуется определить, сколько полных кукаляк(v),
мукак(w), бисяк(x) и пампукских хрюрь(y) имеется.
Поскольку структура (устройство) данных решаемой задачи похожа на
структуру данных предыдущей задачи, то и их решения (алгоритмы) должны
совпадать, так как это фактически одна и та же задача.
Страницы
- « первая
- ‹ предыдущая
- …
- 51
- 52
- 53
- 54
- 55
- …
- следующая ›
- последняя »
