Да. Честно говоря, это задание, для меня это просто головоломка. Цель программы, или «задачи» (если вы хотите взглянуть на это с точки зрения математики), — разделить два числа друг на друга. Вы можете делить целые числа и дроби друг на друга. Определение функции выглядит так:
bool divide(int c1, int n1, int d1, int c2, int n2, int d2, char result[], int len)
с1, с2 — Целые числа
n1, n2 — Числитель 1, Числитель 2
d1, d2 — Знаменатель 1, Знаменатель 2
результат [] — Массив символов, который должен отображать ответ
Len — Количество символов, разрешенных в результате []
Я бы просто использовал длинное деление и нашел бы свой ответ таким образом, но есть ограничение не использовать двойной, поплавок, или же строка Я более ограничен в своих возможностях моего подхода.
Хорошей новостью является то, что я получил далеко идущие пути к конечному решению и хотел бы попросить совет каким будет мой следующий ход. Это мой процесс до сих пор:
1) конвертировать каждое число в неправильную дробь
2) Взять результат 1 * (1 / результат 2)
3) Найти целую часть решения (если она есть)
4) (Из неправильной дроби) Возьмите числитель% знаменатель, чтобы найти мой новый числитель для смешанной дроби, которую я имею
5) Я сейчас здесь, пытаюсь найти 10-кратное число для знаменателя, чтобы я мог представить смешанную дробь в десятичном формате. Любые указатели были бы полезны!
(A / B) / (C / D) = (A / B) x (D / C) = (AD) / (BC)
Так что просто вычислите AD и BC, а затем уменьшите до минимальных сроков.
Если вы хотите на самом деле сделать деление, сделайте это так же, как на бумаге.
Других решений пока нет …