НОД для вещественных чисел

287
05 апреля 2017, 16:40

Здравствуйте! Передо мной стоит следующая задача: написать на C++ метод, вычисляющий НОД для 2 чисел типа int ИЛИ double(класс шаблонный).

Взял алгоритм Евклида с небольшими изменениями:

template <typename T>
    T rational<T>::nod(T a, T b) {
        if (a == b) {
            return a;
        }
        if (a > b) {
            T tmp = a;
            a = b;
            b = tmp;
        }
        return nod(a, b - a);
    }

Работает при:

rational<double> rat(5, 10);//рациональная дробь 5/10
rat.nod(5, 10);//вычисление НОД 5 и 10

И не работает при:

rational<double> rat(5.1, 10);//рациональная дробь 5/10
rat.nod(5.1, 10);//вычисление НОД 5.1 и 10

Вопрос: почему так происходит, и как это исправить, чтобы работало в обоих вариантах? Заранее спасибо за ответы!

READ ALSO
Как обработать файл с пустыми строками?

Как обработать файл с пустыми строками?

В общем, вот в чем суть вопроса: есть файл, который я считываю и обрабатываю так, как надо по заданиюНо если в него вставить пустые строки, то выводит...

173
В чем ошибка C++ код [требует правки]

В чем ошибка C++ код [требует правки]

Задание - В цикле с предусловием пользователем вводятся числа до тех пор, пока их сумма не превысит 100Определить количество введенных четных...

194
Файловый ввод-вывод объектов класса

Файловый ввод-вывод объектов класса

Доброго времени сутокЕсть класс, есть менюшка для работы с классом (добавление, вывод объектов класса, удаление) Каким образом организовать...

196
Поочерёдное открытие окон в Qt

Поочерёдное открытие окон в Qt

Например, есть QMainWindow, где находится форма входа (логин, пароль)При нажатии открывается еще один QMainWindow, уже сама программа, а старое окно закрывается...

285