LINUX.ORG.RU

Зачетная неделя началась уже?

Чтобы сократить дробь, нужно числитель и знаменатель разделить на их GCD. Чтобы найти GCD, смотри алгоритм Эвклида

yoghurt ★★★★★ ()
int mcd(int a, int b) {
    int r;
    while (b != 0) {
        r = a%b;
        a = b; b = r;
    } 
    return a;
}

void drob(int& a, int& b) {
    int aux = mcd(a,b);
    a /= aux; b /= aux;
}

если дробь задана двумя int, то вот это.

Andaril ()
Ответ на: комментарий от Andaril

>Great common divisor?

Во времена Эвклида никаких «Great common divisor» не было. Даже буквы G не было тогда. Для исторической справедлиывости в данном случае надо бы использовать древнегреческий алфавит и язык. А латниница тут вообще постороняя.

anonymous ()
Ответ на: комментарий от dimon555

Выглядит неплохо, но в большинстве реальных случаев особого смысла не имеет. Достаточно глянуть на оценки количества шагов эвклидова алгоритма в худшем случае.

metar ★★★ ()
Ответ на: комментарий от dimon555

>>а оно переносимо?

да, собственно для этого оно и написано - не везде, например, может быть умножение/деление. Или где-то нет сдвигов?

MuZHiK-2 ★★★★ ()
Ответ на: комментарий от anonymous

Да забей, человек, очевидно, много читает англоязычных статей, вот и привык.

ftor ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.