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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 174, средняя оценка - 4.99
Tengel
2 / 2 / 0
Регистрация: 08.10.2008
Сообщений: 17
#1

Числа Фибоначчи - C++

11.10.2008, 10:27. Просмотров 23782. Ответов 8
Метки нет (Все метки)

У меня вот какая проблема: Числа Фибоначчи определяются рекуррентной формулой:

f0 = 0; f1 = 1; fn = fn-1 + fn-2;

Начало последовательности имеет вид 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ... .
Входные данные:
В единственной строке находится число N (0 <= N <= 10000).
Выходные даны:
Выведите N-те число Фибоначчи.
Пример введения
7
Пример выведения
13
я програмку написал, но она мне иногда выводит отрецательные числа...подскажите что мне сделать, что бы ета программа корректно работала.
вот и она:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
void main()
{
    int n;
    cout << "Введите номер числа :";
    do {cin>>n;} while ((n<0)&&(n>10000));
    long long fib[10000];
    fib[0]=0;
    fib[1]=1;
    for (int i=2;i<9999;i++)
    {
        fib[i] = fib[i-1]+fib[i-2];
    }
    cout<<"Число с номером "<<n<<"ето:";
    cout<<fib[n];
    system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
11.10.2008, 10:42     Числа Фибоначчи #2
Знакомая история... Просто переменная выходит за допустимый диапазон своего типа, вот число и отрицательное... Попробуй воспользоваться типом unsigned long int или unsigned long double... Думаю его хватит...
Tengel
2 / 2 / 0
Регистрация: 08.10.2008
Сообщений: 17
11.10.2008, 10:55  [ТС]     Числа Фибоначчи #3
сделал так, но числа выводятса меньшие, чем когда я напишу unsigned long long, как тип массива......но что так, что так, ответ одинаков:Неверный ответ
и что не делал уже, все равно корректно не работает....
Lord_Voodoo
Супер-модератор
8577 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
11.10.2008, 11:23     Числа Фибоначчи #4
Tengel, я недавно писал прогу по остаткам от деления чисел фибоначчи на большие числа, хватало long long, но там алгоритм очень замороченный, а вам для вычисления даже двухтысячного числа 80 бит(long double) ну никак не хватит... либо ищите библиотеки для работы с большими числами, либо ограничьтесь 1000...
V.A.M
Сообщений: n/a
14.10.2008, 21:34     Числа Фибоначчи #5
Poprobuy ispolzovat' clojenie dlinnix dvux chisel' s ispolzovaniem String, Esli tebe nujn@ ya moga dat' tebe code dlya clojenita dlinnix chisel' (okolo ~ 250 cimvolov). Make that as function with 2 arguments...
Lord_Voodoo
Супер-модератор
8577 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
15.10.2008, 09:37     Числа Фибоначчи #6
вот тебе рабочий код на любой фибоначчи:
Код
#include <iostream>
#include <math.h>
using namespace std;
const int N = 220;
int ctrl = 0;
div_t t;
void add(int a[N], int b[N], int c[N]){
  memset(c, 0, sizeof(int)*N);
  int i = 0;
  for(i = N - 1; i >= 0; i--){
    if(t.quot){
      c[i]++;
      if(i < ctrl) ctrl = i;
    }
    t = div((c[i] + a[i] + b[i]),10);
    c[i] = t.rem;
  }
}
int main()
{
 int fib0[N];int fib1[N];int fib2[N];
 memset(fib0, 0, sizeof(int)*N);
 memset(fib1, 0, sizeof(int)*N);
 memset(fib2, 0, sizeof(int)*N);
 int n;
 cin>>n;
 fib0[N - 1] = 1;fib1[N - 1] = 1;
 ctrl = N - 1;
 if(n<2) fib2[N - 1] = 1;
 for (int i = 2;i <= n;i++)
 {
   add(fib0, fib1, fib2);
   memmove(fib0, fib1, sizeof(int)*N);
      memmove(fib1, fib2, sizeof(int)*N);
 }
 for(int i = ctrl; i < N; i++) cout<<fib2[i];
 return 0;
}
LeshKing
Сообщений: n/a
21.03.2014, 18:34     Числа Фибоначчи #7
Зачем столько сложностей?

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>
 
using namespace std;
 
int main()
{
    int a ,b, k;
    a=0;
    b=1;
    cin >> k;
    while (k<=0)
    {
        cout << "ERROR! Enter the number greater than zero: ";
        cin >> k;
    }
    while (k!=0)
    {
        a=a+b;
        b=a-b;
        k=k-1;
        cout << a << " ";
    }
    return 0;
}
BlackSpace
136 / 129 / 51
Регистрация: 15.03.2014
Сообщений: 274
22.03.2014, 19:31     Числа Фибоначчи #8
Цитата Сообщение от LeshKing Посмотреть сообщение
Зачем столько сложностей?
Для расчета больших чисел Фибоначчи. Предположим надо посчитать тысячное число Фибоначчи.
Ваш код для этого не подойдет.

Lord_Voodoo, думаю, что Ваш код содержит ошибку.
Проверяя результаты программы для разных чисел нашел несоответствие с таблицами чисел Фибоначчи.

Вот работа программы
1)
100
573147844013817084101

2)
200
453973694165307953197296969697410619233826

Вот данные из таблицы чисел Фибоначчи, а также из проекта wolframalpha.
Ф(100)=354224848179261915075
Ф(200)=280571172992510140037611932413038677189525
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2014, 10:47     Числа Фибоначчи
Еще ссылки по теме:

C++ Числа Фибоначчи
C++ числа Фибоначчи
C++ Составьте программу, позволяющую найти все числа Фибоначчи, меньшие заданного числа N
C++ Вывести на экран все числа, номера которых есть числа Фибоначчи
Числа Фибоначчи C++

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

Или воспользуйтесь поиском по форуму:
Lord_Voodoo
Супер-модератор
8577 / 2177 / 61
Регистрация: 07.03.2007
Сообщений: 10,863
Завершенные тесты: 1
23.03.2014, 10:47     Числа Фибоначчи #9
BlackSpace, ну спорить не буду, но код тоже проходил тестирование и на скорость, и на емкость... не помню, как ресурс называется... если есть ошибка, то извиняйте...
Yandex
Объявления
23.03.2014, 10:47     Числа Фибоначчи
Ответ Создать тему
Опции темы

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