Заданы числитель и знаменатель обыкновенной дроби. Представить эту дробь в виде десятичной - Free Pascal
Формулировка задачи:
Заданы числитель и знаменатель обыкновенной дроби. Представить эту дробь в виде десятичной (получить n знаков после запятой) и определить, сколько раз встречается в результате цифра 5.
Решение задачи: «Заданы числитель и знаменатель обыкновенной дроби. Представить эту дробь в виде десятичной»
textual
Листинг программы
{$mode objfpc}{$H+}
uses
sysutils, math, gmp;
const
n = 100;
var
num, denom : integer;
p_num, p_denom, res : mpfloat;
s : string;
ch : char;
five : integer;
begin
num := 4; denom := 7;
f_set_default_prec(floor(n / log_10_2));
f_init_set_si(p_num, num);
f_init_set_si(p_denom, denom);
res := f_div(p_num, p_denom);
s := format('%s', [string(res)]);
s := copy(s, 1, pos('.', s) + n);
writeln(s);
five := 0;
for ch in s do if ch = '5' then inc(five);
writeln('5''s -> ', five);
end.
Объяснение кода листинга программы
В данном коде задачей является представление обыкновенной дроби в виде десятичной.
- Импортируются необходимые модули: sysutils, math, gmp.
- Устанавливается константа n равная 100.
- Задаются числитель и знаменатель обыкновенной дроби в переменных num и denom соответственно.
- Создаются переменные p_num и p_denom типа mpfloat и инициализируются значениями числителя и знаменателя соответственно.
- Вычисляется результат деления числителя на знаменатель и сохраняется в переменной res.
- Полученный результат представляется в виде строки в переменной s с помощью функции format.
- Строка s обрабатывается таким образом, чтобы оставить только числительную часть (до десятичной точки).
- Полученная строка выводится на экран с помощью функции writeln.
- Инициализируется переменная five равной нулю.
- Происходит проверка каждого символа строки s. Если символ равен '5', то к переменной five прибавляется единица.
- Выводится количество символов '5' в переменной five.