Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
nxmatrix
1 / 1 / 0
Регистрация: 06.10.2012
Сообщений: 6
#1

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

06.10.2012, 10:10. Просмотров 2628. Ответов 16
Метки нет (Все метки)

Здравствуйте !

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

очень нужно!!! заранее спасибо

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 10:10
Ответы с готовыми решениями:

Вычисление непрерывных дробей и выражений. Вычисление полиномов и их производных.
1. Чему равна знакочередующаяся сумма цифр числа n. 2. Даны...

вычисление дробей
знаменатель высчитывается правильно, а вот числитель нет Кто-то подскажет...

Задача на масив.Ввод дробей и вычисление среднего значения дроби!
#include <iostream> using namespace std; const int MAX=15; const int...

Массив из дробей
Добрый вечер! Необходимо ввести дробные числа, которые хранятся в массиве,...

сокрощение дробей
Нужно сложить две дроби и по возможности сокротить, сложение то работает. А...

16
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
07.10.2012, 19:10 #2
Глубоко вздохните, очистите сознание от тревожных мыслей и попытайтесь сформулировать свой вопрос по-человечески.
1
EMBY
Заблокирован
07.10.2012, 19:36 #3
-_- далеко пойдешь, а если серьезно, то напиши,пожалуйста, по конкретней условие.
0
LK
Заблокирован
07.10.2012, 21:15 #4
И название темы предложите понятное, да и правила не мешало бы почитать.
0
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" на окно;

один плюс одна вторая
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 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 минуты
В такой постановке задачу нужно решать при помощи рекурсии. Или два цикла использовать, но это не красиво и я не буду.
1
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 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;
}
1
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2012, 17:14 #8
Имеется теорема, которая утверждает, что любое рациональное число представимо, и притом единственным образом, в виде конечной цепной дроби. Поэтому в задании нужно найти это рациональное число, а для этого можно, например, воспользоваться так называемыми подходящими дробями. Так что задача не в лоб решается.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
09.10.2012, 17:28 #9
Цитата Сообщение от silent_1991 Посмотреть сообщение
Зачем? О_о
Затем, что не подумав сказал.
2
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
09.10.2012, 17:37 #10
Thinker, вы не поняли, в задаче всего лишь надо посчитать значение конечной цепной дроби до введённого n, что и было проделано.
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2012, 18:14 #11
Цитата Сообщение от silent_1991 Посмотреть сообщение
в задаче всего лишь надо посчитать значение конечной цепной дроби
правильно, а значение конечной цепной дроби это рациональное число вида a/b, а выполняя деление вы это рациональное число можете не получить. но я не спорю, если хотите, то делите на здоровье).
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
09.10.2012, 19:22 #12
Цитата Сообщение от Thinker Посмотреть сообщение
а выполняя деление вы это рациональное число можете не получить
Ой, вот ладно.

Добавлено через 1 минуту
Thinker, я в любом случае получу рациональное число. Потому что иррациональное число компьютер (в частности, формат IEEE 754) представить не в состоянии.
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2012, 19:26 #13
Цитата Сообщение от silent_1991 Посмотреть сообщение
[я в любом случае получу рациональное число.
согласен, но не всегда это рациональное число будет равно искомому числу.
0
silent_1991
Эксперт С++
5007 / 3067 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
09.10.2012, 19:28 #14
Thinker, оно, опять же, в принципе ему равно не будет. Ибо формат IEEE 754
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.10.2012, 19:31 #15
Смейтесь, не смейтесь, а чтобы вычислить значение конечной цепной дроби нужны другие методы, которые позволяют получить ответ вида a/b
0
nxmatrix
1 / 1 / 0
Регистрация: 06.10.2012
Сообщений: 6
12.10.2012, 20:08  [ТС] #16
Благадарю всех
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 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
0
12.10.2012, 20:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2012, 20:55

Сложение дробей
Как сложить две дроби? #include&lt;iostream&gt; using namespace std; class...

Класс дробей
Кто-нибудь может проверить код (программа производит операции с дробями,...

Классы дробей С++
Здравствуйте, помогите доделать класс дробей! Дан массив дробей, 1) нужно...


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

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

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