ик
Гость
|
|
« : 03-05-2006 22:11 » |
|
помогите может пожалуйста функцией или алгоритмом перевода дробей из float в обыкновенную дробь и обратно.....
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #1 : 03-05-2006 22:18 » |
|
ик, в обыкновенную - это как? а по идее - f == (2*n*( f-(int)(f) ))/(2*n) + (int)(f) то есть дробную часть умножаем на 2 до тех пор, пока она не станет >=1 и тогда дробь == целая часть + ( 1/(2*n) ) где целая часть == (int)(f) 1 - это результат умножения f на (2*n)
|
|
« Последнее редактирование: 03-05-2006 22:24 от Алексей1153 »
|
Записан
|
|
|
|
ик
Гость
|
|
« Ответ #2 : 03-05-2006 22:37 » |
|
не очень понятно что такое f. мне нужно из дроби типа 1,253335 сделать что типа 4/5 например....
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #3 : 03-05-2006 22:54 » |
|
ну да, тот вариант не очень щас подумаем... если не засну
|
|
|
Записан
|
|
|
|
LP
Помогающий
Offline
|
|
« Ответ #4 : 04-05-2006 01:35 » |
|
Вот так можно Константой eps задаешь точность. #include <iostream>
//НОД int find_gcd(int a, int b ) { while(b) { int t = b; b = a % b; a = t; } return a; }
const double eps = 0.001;
int main() { double num = 1.253335; double denom = 1.0/(eps*10.0);
num = int(num*denom); double gcd = (double)find_gcd((int)num, (int)denom); num /= gcd; denom /= gcd; std::cout << num << '/' << denom; return 0; }
|
|
« Последнее редактирование: 19-12-2007 21:55 от Алексей1153++ »
|
Записан
|
Если эта надпись уменьшается, значит ваш монитор уносят
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #5 : 04-05-2006 14:13 » |
|
Нарооод вы чего а? Ик. Это как это так можно из 1,253335 получить 4/5? В какой математике? Вам лапшу на уши вешают. Лёшка, ночью надо спаааать. )
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
LP
Помогающий
Offline
|
|
« Ответ #6 : 04-05-2006 14:49 » |
|
Очевидно он имел в виду 5/4, а не 4/5.
|
|
|
Записан
|
Если эта надпись уменьшается, значит ваш монитор уносят
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #7 : 04-05-2006 15:08 » |
|
Лёшка, ночью надо спаааать. ) дык что я и сделал Посидел часик, не получилось, потом меня срубило. В 5 утра ))
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #8 : 04-05-2006 15:16 » |
|
Очевидно он имел в виду 5/4, а не 4/5. Уже ближе, но не совсем 5/4 - 1,25 )
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
LP
Помогающий
Offline
|
|
« Ответ #9 : 04-05-2006 15:54 » |
|
Надо же, а я всегда думал что 5/4 будет 1,253335. Но если в моей чудо-программе значение eps поменять на 0.0000001, то она выдаст более точный результат: 250667/200000, что дает 1,253335.
|
|
|
Записан
|
Если эта надпись уменьшается, значит ваш монитор уносят
|
|
|
LP
Помогающий
Offline
|
|
« Ответ #10 : 04-05-2006 15:59 » |
|
Блин, будет ведь 0,1253335. Сейчас поправлю прогу. При маленьких eps программа работает неправильно. При eps=0.00001; вроде все ок.
|
|
« Последнее редактирование: 04-05-2006 16:36 от LP »
|
Записан
|
Если эта надпись уменьшается, значит ваш монитор уносят
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #11 : 04-05-2006 17:42 » |
|
LP, целую часть нужно наверное сразу отделить
= (int)f;
а играться с дробной
= f - (int)f;
|
|
|
Записан
|
|
|
|
ик
Гость
|
|
« Ответ #12 : 04-05-2006 21:23 » |
|
ребята 4/5 и 1,253335 так вообще от балды написано было ... знак равно не ставился просто для примера
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #13 : 04-05-2006 21:30 » |
|
ик, Эта задача должна была препоподаваться еше в классе 5 обычной школы. Если не раньше. Вспомни как ты это делал на математике и делай аналогично. Прямых функций в стандартной библиотеке я думаю нет и не должно быть.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
ик
Гость
|
|
« Ответ #14 : 04-05-2006 21:47 » |
|
не было у меня такого в 5 классе ... вариант как делать то есть, решила спросить че велосипед то изобретать
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #15 : 05-05-2006 07:11 » |
|
а зачем вообще eps? 1,253335 = 1+25335/100000, а далее найти общие знаменатели и сократить
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #16 : 05-05-2006 08:38 » |
|
Нуууу крыша постепенно отъезжает! ) 5/4 по алгоритму считаем!!! А если просто 5 на 4 разделить? Ща тоже прогу напишу проверю )
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
|