Дм
Дмитрий

Вопрос программистам. С++. Преобразование типов. Ошибка в коде.

Функция получает произвольное число. Нужно разбить его на числитель, знаменатель и целую часть. Почему-то все время выполняется только первое условие. Не понимаю, почему.
Fraction:: Fraction (double real) // convert real num to a fraction
{
double frac;//fractional part
int k=0; // counter

integer = floor(real);
frac = real - integer;

if (frac == 0) // real = 25
{
numerator = 0;
denominator = 1;
}


if((frac !=0) && (frac*10 - floor(frac*10))== 0)
{

numerator = frac * 10;
denominator = 10;
}


else
{
while(((frac*10) - floor(frac)) < 1 && ((frac*10) - floor(frac)) != 0)
frac *= 10;
k++;
}
numerator = (int)frac;
denominator = pow(10.0,k);
}
}

НГ
Наталья Горбунова

ну для начала, в С++ лучше юзать static_cast для преобразования в int

ОС
Оля Суслова

поставь else после первого условия if (frac == 0) // real = 25
Думаю, должно заработать

УИ
Улан Исмаилов

((double)integer) и т. д пробуй везде скобки проставь
и плохой у тебя алгоритм (у меня вроде работает, местами: ) vs2012), я думал он подбирает самые лучшие числа т. е от 0,4 2/5 а он тупо 4/10, проще по другому тогда без всяких циклов

сколько циферок надо? 12115454/100000000000000000000000000 допустимо?)

Похожие вопросы
Программисты, скажите, где у меня ошибка в коде Visual Basic?
Вопрос программистам. Что я не так сделал в коде, не пойму ?
Вопрос программистам С++!
какая ошибка в коде? С#
Вопрос для программистов
Что за ошибка {ОбщийМодуль. зфЗащищенныеФункции (1032)}: Преобразование значения к типу Число не может быть выполнено
вопрос к программистам на с++
подкиньте пажалуйста программный код от проекта "функции преобразования типов" на языке турбо делфи
В где ошибка в коде?
В чем ошибка в коде ?