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

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

Войти
Регистрация
Восстановить пароль
 
syrga
5 / 5 / 2
Регистрация: 04.12.2010
Сообщений: 65
#1

фибоначчи( функции,массивы) - C++

13.01.2012, 10:04. Просмотров 853. Ответов 9
Метки нет (Все метки)

написать программу вычисляющую 100-ое число фибоначчи. 2 варианта:используя функцию и используя массив....

Добавлено через 48 минут
он не правильно находит 100 позицию....Что делать????:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <stdio.h>
using namespace std;
double fib(int n) {
    double f1, f2, fn;
    int i;
    f1 = 1; f2 = 1;
    if (n == 0) return 0;
    else if ((n == 1) || (n == 2)) return 1;
    else for(i = 3; i <= n; ++i) {
        fn = f1 + f2;
        f1 = f2;
        f2 = fn;
    }
    return fn;
}
int main() {
    int n;
    cout << " n pozicii: ";
    cin >> n;
    printf(" %d -oe chislo fib %f\n", n, fib(n));
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 10:04     фибоначчи( функции,массивы)
Посмотрите здесь:

Одномерные массивы (генерация чисел первыми 15 числами Фибоначчи, функции) - C++
Объявите одномерный целочисленный массив, в котором 15 элементов. Выполните генерацию массива первыми 15 числами Фибоначчи. Выведите Массив...

рекурсия и массивы: числа Фибоначчи - C++
привет всем ! как с помощью рекурсии с параметрами массива реализовать числа Фибоначчи ? вот что то на клепал #include &quot;stdafx.h&quot; ...

Функции. Рекурсия на примере Фибоначчи - C++
Можете начинающему объяснить решен задачи про числа фиибоначи с помощью рекурсии. Вот код // Fibonacci series using recursion ...

Решение функции методом Квадратичной аппроксимации и Фибоначчи - C++
Помогите решить данную функцию методом квадратичной аппроксимации и Фибоначчи f(x) = log(cos(x))+cos(x) Интервал Экстремум max

Найти приближенное значение минимума функции методом Фибоначчи - C++
Помогите пожалуйста написать программу. Найти приближенное значение минимума заданной функции(значение функции вычислить в N=21 точках)...

Visual C++ тема функции. Построить последовательность чисел Фибоначчи. - C++
Для заданного числа N&gt;1 построить последовательность чисел фибоначчи А(0), А(1), .... А(n), которые изменяются по закону...

Рекурсия, ряд Фибоначчи (определить количество рекурсивных вызовов функции) - C++
Здравствуйте, уважаемые форумчане ! Подскажите, пожалуйста, как определить количество рекурсивных вызовов функции ? Вот, собственно,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
brainfrog
4 / 4 / 0
Регистрация: 07.11.2011
Сообщений: 6
13.01.2012, 11:00     фибоначчи( функции,массивы) #2
По-моему вычисляет правильно, выводит неправильно. Попробуйте сделать вывод так:
C++
1
2
3
#include <iomanip> // для setprecision
//...
cout << n << "-oe chislo fib = " << setprecision(30) << fib(n) << endl;
syrga
5 / 5 / 2
Регистрация: 04.12.2010
Сообщений: 65
13.01.2012, 11:32  [ТС]     фибоначчи( функции,массивы) #3
Цитата Сообщение от brainfrog Посмотреть сообщение
setprecision(30)
а что это значит?

Добавлено через 8 минут
всё равно не работает(((
табаков
1 / 1 / 0
Регистрация: 13.01.2012
Сообщений: 25
13.01.2012, 11:38     фибоначчи( функции,массивы) #4
setprecision
setw

используются при табуляции
setprecision помоему знаков после запятой обозначает
syrga
5 / 5 / 2
Регистрация: 04.12.2010
Сообщений: 65
13.01.2012, 12:06  [ТС]     фибоначчи( функции,массивы) #5
выводится: fib=354224848179262000000

как сделать так чтобы было без нулей????
golatin
265 / 222 / 43
Регистрация: 12.10.2011
Сообщений: 326
Завершенные тесты: 1
13.01.2012, 12:12     фибоначчи( функции,массивы) #6
Проблема скорее всего в double
из MSDN
тип: double
размер: ±5.0 × 10−324 to ±1.7 × 10308
точность: 15-16 digits

Твоя программа неправильно начинает считать уже с 79 числа вместо 14472334024676221 выдает 14472334024676220

long long int тоже не подходит: предел 92-oe число 7540113804746346429

Вводи длинную арифметику 100 число 354224848179261915075 (21 цифра) - очень большое
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
13.01.2012, 12:59     фибоначчи( функции,массивы) #7
Да, эта задача нерешаема через стандартные типы. Только через длинную арифметику.
syrga
5 / 5 / 2
Регистрация: 04.12.2010
Сообщений: 65
16.01.2012, 13:11  [ТС]     фибоначчи( функции,массивы) #8
так значит её никак не решить???
помогите...
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
16.01.2012, 13:15     фибоначчи( функции,массивы) #9
Посмотрите, вот вариант по проще http://gmplib.org/#FUNCCLASSES
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 13:24     фибоначчи( функции,массивы)
Еще ссылки по теме:

используя рекурсивную реализацию функции для чисел фибоначчи доказать Fn + 1Fn - 1 - Fn2 = (- 1)n (Кассини)) - C++
используя рекурсивную реализацию функции для чисел фибоначчи доказать Fn + 1Fn - 1 - Fn2 = (- 1)n (Кассини)) #include...

массивы и функции - C++
Помогите, пожалуйста, разобраться в следующем задании. &quot;Дан 2d массив А(n,n), который заполнен нулями и единицами. Узнать сколько колонн...

Массивы и функции - C++
Здравствуйте. Очень интересная ошибка возникает в результате работы этого когда: void schet(double result, int ar_size); int main() {...

Массивы и функции - C++
Всем привет, вот такая задачка: Найти минимальное элемент двумерного массива, с помощью функции. Выдает ошибку: &quot;error C2664: poisk:...

Функции / Массивы - C++
задача 5\вариант2 &quot;Написать программу, определяющую образуют ли элементы целочисленных массивов А и B неубывающую...


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

Или воспользуйтесь поиском по форуму:
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.01.2012, 13:24     фибоначчи( функции,массивы) #10
Либо так.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <vector>
#include <cmath>
#include <sstream>
#include <string>
#include <iomanip>
#include <cstdlib>
#include <cstdio>
 
class BigInteger
{
        std::vector<int> value;
        static const int base = 1e9;
        static const int count_of_digits = 9;
        
public:
 
        BigInteger() { value.push_back(0); }   
        BigInteger( const std::string& );
        BigInteger( long long );
        BigInteger& operator = ( long long );
        
        BigInteger& operator += ( const BigInteger& );
        
        friend BigInteger operator + ( const BigInteger&, const BigInteger& );
        
        friend std::istream& operator >> ( std::istream&, BigInteger& );
        friend std::ostream& operator << ( std::ostream&, const BigInteger& );
};
 
#define double BigInteger
 
double fib(int n) {
        double f1, f2, fn;
        int i;
        f1 = 1; f2 = 1;
        if (n == 0) return 0;
        else if ((n == 1) || (n == 2)) return 1;
        else for(i = 3; i <= n; ++i) {
                fn = f1 + f2;
                f1 = f2;
                f2 = fn;
        }
        return fn;
}
 
#undef double
 
int main() {
        int n;
        std::cout << "n pozicii: ";
        std::cin >> n;
        std::cout << n << " - oe chislo fib " << fib(n) << std::endl;
}
 
BigInteger& BigInteger::operator = ( long long n )
{
    this->value = BigInteger(n).value;
    return *this;
}
 
BigInteger::BigInteger( const std::string& str )
{
        for (int i = str.length() ; i > 0 ; i -= count_of_digits)
        {
                if ( i < count_of_digits )
                {
                        value.push_back( atoi( str.substr(0, i).c_str() ) );
                }
                else
                {
                        value.push_back( atoi( str.substr(i - count_of_digits, count_of_digits).c_str() ) );
                }
        }
}
 
BigInteger::BigInteger( long long x )
{
        std::ostringstream ost;
        ost << x;
        std::string str = ost.str();
        
        for (int i = str.length() ; i > 0 ; i -= count_of_digits)
        {
                if ( i < count_of_digits )
                {
                        value.push_back( atoi( str.substr(0, i).c_str() ) );
                }
                else
                {
                        value.push_back( atoi( str.substr(i - count_of_digits, count_of_digits).c_str() ) );
                }
        }
        
}
 
BigInteger& BigInteger::operator += ( const BigInteger& b )
{
        for ( int temp = 0, i = 0; i < (int) std::max( this->value.size(), b.value.size() ) || temp != 0 ; ++i)
        {
                if ( i == (int) value.size() )
                        value.push_back( 0 );
                
                value[i] += temp + ( i < (int) b.value.size() ? b.value[i] : 0 );
                temp = value[i] >= base;
                
                if ( temp != 0 )
                        value[i] -= base;
        }
        
        return *this;
}
 
BigInteger operator + ( const BigInteger& a, const BigInteger& b )
{
        BigInteger c = a;
        c += b;
        return c;
}
 
std::istream& operator >> ( std::istream& stream, BigInteger& big )
{
        std::string str;
        std::cin >> str;
        big = BigInteger(str);
        
        return stream;  
}
 
std::ostream& operator << ( std::ostream& stream, const BigInteger& big )
{
        if ( big.value.empty() )
                stream << 0;
        else
                stream << big.value.back();
                
        for (int i = (int) big.value.size() - 2; i >= 0; --i)
        {
                stream << std::setfill('0') << std::setw(BigInteger::count_of_digits) << big.value[i];
        }
        
        return stream;
}
Вашу функцию оставил неизменной.
Yandex
Объявления
16.01.2012, 13:24     фибоначчи( функции,массивы)
Ответ Создать тему
Опции темы

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