Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.69
nadsindrom
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 11
#1

Вывод чисел в виде обыкновенных дробей - C++

04.11.2006, 14:03. Просмотров 3962. Ответов 3
Метки нет (Все метки)

Как осуществить вывод чисел в виде обыкновенных дробей в С++?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2006, 14:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод чисел в виде обыкновенных дробей (C++):

Сложение обыкновенных дробей - C++
Две дроби a/b и c/d можно сложить следующим образом: a/b + c/d = (a*d + b* c)/(b*d) Например, 1/4 + 2/3 = (1*3 + 4*2)/4*3 = 11/12 ...

Калькулятор для обыкновенных дробей - C++
Не компилируется( #include <iostream> #include <math.h> using namespace std; class Calc

Найти сумму и разность двух обыкновенных дробей - C++
Помогите пожалуйста,нужно написать консольную программу на с++,находящую сумму и разность двух обыкновенных дробей. Посмотрел похожие...

Найти сумму обыкновенных дробей с выделенной целой частью - C++
Написать класс, для нахождения суммы обыкновенных дробей с выделенной целой частью. перегрузка суммы ввода и вывода. конструктор и...

ООП. нахождение суммы обыкновенных дробей с выделенной целой частью - C++
Неправильно высчитывает сумму. что не так? помогите. само задание такое. написать класс, реализующий понятия обыкновенных дробей с...

Выполнить перегрузку функции вычитания для обыкновенных и десятичных дробей - C++
Написать перегруженные функции и основную программу, которая их вызывает. а) для деления десятичных дробей; б) для деления обыкновенных...

3
Vadim_ig
0 / 0 / 0
Регистрация: 05.01.2010
Сообщений: 235
05.11.2006, 11:00 #2
скорее всего придется вручную преобразовывать. Хотя может логичнее будет изначально операции производить в простых дробях (опять же вручную их предварительно реализовав)
0
palva
2652 / 1879 / 274
Регистрация: 08.06.2007
Сообщений: 7,218
Записей в блоге: 4
07.11.2006, 02:30 #3
Обычно здесь советуют использовать разложение в цепную дробь. Вот я попробовал дробь из семи звеньев.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
typedef struct {
  __int64 num, denom;
} Tq;
#define N 7
void to_frac(double a, Tq *pq) {
  int i;
  int m;
  __int64 ii, temp[N];
  m = a < 0;
  if(m) a = -a;
  for(i=0; i < N; i++) {
    temp[i] = a;
    a = 1.0 / (a - temp[i]);
  }
  pq->denom = 0;
  pq->num = 1;
  for(i=N; i-- > 0;) {
    ii = temp[i] * pq->num + pq->denom;
    pq->denom = pq->num;
    pq->num = ii;
  }
  if(m) pq->num = -(pq->num);
}
int main() {
  Tq q;
  double a;
  a = -3.2435;
  to_frac(a, &q);
  printf("%lf", a);
  printf("%I64d / %I64d", q.num, q.denom);
  printf("%lf", (double)q.num / q.denom);
  return 0;  
}
//   -3.243500
//   -1372 / 423
//   -3.243499
Можете оценить точность. Если хотите сделать количество звеньев как параметр функции, то придется выделять память для массива temp переменного размера, а потом ее освобождать.
0
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
13.11.2006, 22:46 #4
А может стоит попробовать найти наибольший общий делитель?



Скажем есть десятичная дробь: 0.75, что есть: 75/100 ищем НОД для 75 и 100 -> 25

Делим 75 : 25 -> 3, 100 : 25 -> 4

Получаем дробь: 3/4



Подробнее о НОД: http://ru.wikipedia.org/wiki/Наибольший_общий_делитель



Удачи,

Владимир
0
13.11.2006, 22:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2006, 22:46
Привет! Вот еще темы с ответами:

Выполнить перегрузку функции вычитания для обыкновенных и десятичных дробей - C++
Написать перегруженные функции и основную программу, которая их вызывает. а) для вычитания десятичных дробей; б) для вычитания...

Вывод десятичных чисел в двоичном виде - C++
Пытаюсь сделать программу выводящую десятичные числа в двоичной системе. В чем ошибка? При любом введенном числе выводит нули. ...

Как сделать вывод чисел в виде квадрата? - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { float Fx = 4, Fy = 5; int x, y, m; cin...

Как сделать вывод чисел (например 1.12062e+06) в стандартном виде? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std; int main() ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru