Zoomf
30.08.2021 08:39

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

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Kuro111
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. Тогда достаточно сократить числитель и знаменатель на общие множители, а далее выполнить проверку знаменателя.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота