﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Программирование / C++  / Обыкновенные дроби / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Wed, 03 Dec 2008 10:31:49 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Обыкновенные дроби</title><link>http://www.relib.com/forums/Topic906892-7-1.aspx</link><description>А может стоит попробовать найти наибольший общий делитель?&lt;br&gt;&lt;br&gt;Скажем есть десятичная дробь: 0.75, что есть: 75/100 ищем НОД для 75 и 100 -&gt; 25&lt;br&gt;Делим 75 : 25 -&gt; 3, 100 : 25 -&gt; 4&lt;br&gt;Получаем дробь: 3/4&lt;br&gt;&lt;br&gt;Подробнее о НОД: [url]http://ru.wikipedia.org/wiki/Наибольший_общий_делитель[/url]&lt;br&gt;&lt;br&gt;Удачи,&lt;br&gt;Владимир</description><pubDate>Mon, 13 Nov 2006 19:46:43 GMT</pubDate><dc:creator>boombastik</dc:creator></item><item><title>RE: Обыкновенные дроби</title><link>http://www.relib.com/forums/Topic906892-7-1.aspx</link><description>Обычно здесь советуют использовать разложение в цепную дробь. Вот я попробовал дробь из семи звеньев.&lt;/P&gt;&lt;P&gt;[code]#include &amp;lt;stdio.h&amp;gt;&lt;BR&gt;typedef struct {&lt;BR&gt;  __int64 num, denom;&lt;BR&gt;} Tq;&lt;BR&gt;#define N 7&lt;BR&gt;void to_frac(double a, Tq *pq) {&lt;BR&gt;  int i;&lt;BR&gt;  int m;&lt;BR&gt;  __int64 ii, temp[N];&lt;BR&gt;  m = a &amp;lt; 0;&lt;BR&gt;  if(m) a = -a;&lt;BR&gt;  for(i=0; i &amp;lt; N; i++) {&lt;BR&gt;    temp[i] = a;&lt;BR&gt;    a = 1.0 / (a - temp[i]);&lt;BR&gt;  }&lt;BR&gt;  pq-&amp;gt;denom = 0;&lt;BR&gt;  pq-&amp;gt;num = 1;&lt;BR&gt;  for(i=N; i-- &amp;gt; 0;) {&lt;BR&gt;    ii = temp[i] * pq-&amp;gt;num + pq-&amp;gt;denom;&lt;BR&gt;    pq-&amp;gt;denom = pq-&amp;gt;num;&lt;BR&gt;    pq-&amp;gt;num = ii;&lt;BR&gt;  }&lt;BR&gt;  if(m) pq-&amp;gt;num = -(pq-&amp;gt;num);&lt;BR&gt;}&lt;/P&gt;&lt;P&gt;int main() {&lt;BR&gt;  Tq q;&lt;BR&gt;  double a;&lt;BR&gt;  a = -3.2435;&lt;BR&gt;  to_frac(a, &amp;amp;q);&lt;BR&gt;  printf("%lf", a);&lt;BR&gt;  printf("%I64d / %I64d", q.num, q.denom);&lt;BR&gt;  printf("%lf", (double)q.num / q.denom);&lt;BR&gt;  return 0;  &lt;BR&gt;}&lt;BR&gt;//   -3.243500&lt;BR&gt;//   -1372 / 423&lt;BR&gt;//   -3.243499[/code]&lt;/P&gt;&lt;P&gt;Можете оценить точность. Если хотите сделать количество звеньев как параметр функции, то придется выделять память для массива temp переменного размера, а потом ее освобождать.</description><pubDate>Mon, 06 Nov 2006 23:30:47 GMT</pubDate><dc:creator>palva</dc:creator></item><item><title>RE: Обыкновенные дроби</title><link>http://www.relib.com/forums/Topic906892-7-1.aspx</link><description>скорее всего придется вручную преобразовывать. Хотя может логичнее будет изначально операции производить в простых дробях (опять же вручную их предварительно реализовав)</description><pubDate>Sun, 05 Nov 2006 08:00:55 GMT</pubDate><dc:creator>Vadim_ig</dc:creator></item><item><title>Обыкновенные дроби</title><link>http://www.relib.com/forums/Topic906892-7-1.aspx</link><description>Как осуществить вывод чисел в виде обыкновенных дробей в С++?</description><pubDate>Sat, 04 Nov 2006 11:03:02 GMT</pubDate><dc:creator>nadsindrom</dc:creator></item></channel></rss>