Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
nxmatrix
 Аватар для nxmatrix
1 / 1 / 0
Регистрация: 06.10.2012
Сообщений: 6
06.10.2012, 10:10     Вычисление цепных дробей #1
Здравствуйте !

я начинающий по программирований с++
найдите формулу плииз
если N=3;
1+(1/(2+(1/3)))

очень нужно!!! заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
07.10.2012, 19:10     Вычисление цепных дробей #2
Глубоко вздохните, очистите сознание от тревожных мыслей и попытайтесь сформулировать свой вопрос по-человечески.
EMBY
Заблокирован
07.10.2012, 19:36     Вычисление цепных дробей #3
-_- далеко пойдешь, а если серьезно, то напиши,пожалуйста, по конкретней условие.
LK
Заблокирован
07.10.2012, 21:15     Вычисление цепных дробей #4
И название темы предложите понятное, да и правила не мешало бы почитать.
nxmatrix
 Аватар для nxmatrix
1 / 1 / 0
Регистрация: 06.10.2012
Сообщений: 6
09.10.2012, 15:54  [ТС]     Вычисление цепных дробей #5
цель: составить формулу !

Тема: Цикл "for" ;

На черное окошко выводишь "2"

компютер вычисляет так: 1+(1/2);

если писать "3" на черное окно то :1+(1/(2+(1/3))):

1+1
2+ 1
3

Добавлено через 4 минуты
Можете как дробь сделать чтоб по понятнее было ;
если писать "2" на окно;

один плюс одна вторая
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.10.2012, 16:05     Вычисление цепных дробей #6
Ты меня так порадовал, что я тебе даже отвечу кодом!

C++
1
2
3
4
5
6
7
int N = 0;
cin >> N;
double result = 1;
for( int n = 2; n <= N; ++n )
    result += 1./(double)n;
 
cout << result;
Добавлено через 4 минуты
А! Тебе же формулу, а не решение?
Я ашипся.(

Добавлено через 3 минуты
В такой постановке задачу нужно решать при помощи рекурсии. Или два цикла использовать, но это не красиво и я не буду.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.10.2012, 16:58     Вычисление цепных дробей #7
Цитата Сообщение от Deviaphan Посмотреть сообщение
В такой постановке задачу нужно решать при помощи рекурсии. Или два цикла использовать
Зачем? О_о
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
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <sstream>
#include <string>
 
double solve(int n)
{
    if (n <= 0)
        return 0.0;
    
    double result = n;
    
    for (int i = n - 1; i >= 1; --i)
        result = i + 1.0 / result;
    
    return result;
}
 
std::string int_to_str(int value)
{
    std::ostringstream ostr;
    
    ostr << value;
    
    return ostr.str();
}
 
std::string build_formula(int n)
{
    if (n == 1)
        return "1";
    
    std::string formula = int_to_str(n);
    
    for (int i = n - 1; i > 1; --i)
        formula = "(" + int_to_str(i) + " + 1 / " + formula + ")";
    
    return "1 + 1 / " + formula;
}
 
int main()
{
    std::cout << build_formula(1) << " = " << solve(1) << std::endl;
    std::cout << build_formula(2) << " = " << solve(2) << std::endl;
    std::cout << build_formula(3) << " = " << solve(3) << std::endl;
    std::cout << build_formula(4) << " = " << solve(4) << std::endl;
    
    return 0;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2012, 17:14     Вычисление цепных дробей #8
Имеется теорема, которая утверждает, что любое рациональное число представимо, и притом единственным образом, в виде конечной цепной дроби. Поэтому в задании нужно найти это рациональное число, а для этого можно, например, воспользоваться так называемыми подходящими дробями. Так что задача не в лоб решается.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
09.10.2012, 17:28     Вычисление цепных дробей #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Зачем? О_о
Затем, что не подумав сказал.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.10.2012, 17:37     Вычисление цепных дробей #10
Thinker, вы не поняли, в задаче всего лишь надо посчитать значение конечной цепной дроби до введённого n, что и было проделано.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2012, 18:14     Вычисление цепных дробей #11
Цитата Сообщение от silent_1991 Посмотреть сообщение
в задаче всего лишь надо посчитать значение конечной цепной дроби
правильно, а значение конечной цепной дроби это рациональное число вида a/b, а выполняя деление вы это рациональное число можете не получить. но я не спорю, если хотите, то делите на здоровье).
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.10.2012, 19:22     Вычисление цепных дробей #12
Цитата Сообщение от Thinker Посмотреть сообщение
а выполняя деление вы это рациональное число можете не получить
Ой, вот ладно.

Добавлено через 1 минуту
Thinker, я в любом случае получу рациональное число. Потому что иррациональное число компьютер (в частности, формат IEEE 754) представить не в состоянии.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2012, 19:26     Вычисление цепных дробей #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
[я в любом случае получу рациональное число.
согласен, но не всегда это рациональное число будет равно искомому числу.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
09.10.2012, 19:28     Вычисление цепных дробей #14
Thinker, оно, опять же, в принципе ему равно не будет. Ибо формат IEEE 754
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2012, 19:31     Вычисление цепных дробей #15
Смейтесь, не смейтесь, а чтобы вычислить значение конечной цепной дроби нужны другие методы, которые позволяют получить ответ вида a/b
nxmatrix
 Аватар для nxmatrix
1 / 1 / 0
Регистрация: 06.10.2012
Сообщений: 6
12.10.2012, 20:08  [ТС]     Вычисление цепных дробей #16
Благадарю всех
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2012, 20:55     Вычисление цепных дробей
Еще ссылки по теме:

Сложение дробей C++
Сокрашение дробей C++
Упрощение дробей C++

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.10.2012, 20:55     Вычисление цепных дробей #17
Если уж вновь подняли эту тему, вот вам вычисление рациональной дроби
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
#include<iostream>
 
void F(int *a, int n, int &p, int &q)
{
   int i, p0, p1, q0, q1;
   p0 = 1; p = p1 = a[0];
   q0 = 0; q = q1 = 1;
   for(i = 1; i < n; i++)
   {
       p = p0 + p1*a[i];
       p0 = p1; p1 = p;
       q = q0 + q1*a[i];
       q0 = q1; q1 = q;
   }
}
 
int main()
{
   int p, q, n, a[] = {1, 2, 3};
   n = sizeof(a) / sizeof(*a);
   F(a, n, p, q);
   std::cout << p << "/" << q << "\n";
   return 0;
}
Ответ: 10/7
Yandex
Объявления
12.10.2012, 20:55     Вычисление цепных дробей
Ответ Создать тему
Опции темы

Текущее время: 03:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru