Язык: c++ реализовать программу с форматированным определенным образом выводом. допустим, выводим результат деления a на b: входные данные: 3 2 вывод: 1.5 входные данные: 8 9 вывод: \frac{8}{9} по сути: если получившееся число можно представить в виде десятичной дроби без периода, то выводим в виде десятичной. если нет (например, 8/9=8,8(8)) - в виде обыкновенной.

Николь28071547 Николь28071547    3   06.10.2019 01:20    0

Ответы
Kisson Kisson  09.10.2020 22:53

Привожу 2 варианта решения.

Вариант 1: файл 1.cpp

Решение основано на обыкновенном вычислении периода дроби (для дробей, имеющих конечную десятичную запись(например, 1/2=0,5), период вычисляется для формы с нулем в периоде(то есть для 1/2 берется форма 0,5(0))) с деления столбиком.

Замечание: сам алгоритм деления в столбик я писал достаточно давно, и для других программ, поэтому его реализация в данном коде может быть неоптимальной (в плане памяти или кол-ва операций), однако он работает.

Вариант 2: файл 3.cpp

Если немного углубиться в математику, можно найти теорему, по которой дробь, представленная в виде m/n , где НОД(m, n) = 1, имеет конечную десятичную запись тогда и только тогда, когда ее знаменатель n = 5^{a_1}*2^{a_2}; a_1, a_2\in Z, a_1, a_2\geq0. Тогда достаточно сократить числитель и знаменатель на общие множители, а далее выполнить проверку знаменателя.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика