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

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

Войти
Регистрация
Восстановить пароль
 
Almat29
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 26
#1

Число Фибоначчи до числа n. Код неправильно работает - C++

12.01.2014, 03:47. Просмотров 386. Ответов 9

Надо написать код через main что бы программа просила ввести пользователя положительное число n, далее программа должна выдавать все числа Фибоначчи до n. Например n = 100, то ответ 0,1,1,2,3,5,8,13,21,34,55,89 или же n = 8 то ответ 0,1,1,2,3,5,8.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main() {
    int n;
    cout << "Enter a number: ";
    cin >> n;
    int a(-1),b(1);
    while ( a < n)
    {
        a = a + b;
        b = a + b;
        cout << a  << " " << b << " ";
    }
    
    system("pause");
    return 0;
}
у меня ответ получается при n = 8: 0,1,1,2,3,5,8,13 и при n = 100: 0,1,1,2,3,5,8,13,21,34,55,89,144,233;
а должно быть при n = 8: 0,1,1,2,3,5,8 и при n = 100: 0,1,1,2,3,5,8,13,21,34,55,89.

Кто знает в чем проблема или как код изменить, помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sasha
4850 / 2324 / 228
Регистрация: 05.06.2008
Сообщений: 7,292
Записей в блоге: 3
12.01.2014, 07:03     Число Фибоначчи до числа n. Код неправильно работает #2
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
#include <iostream.h>
#include <conio.h>
int main(int argc, char* argv[])
{
 
    int n;
    cout << "Enter a number: ";
    cin >> n;
    int a = -1,b = 1,i=1;
    unsigned int c = 0;
    while (i < n)
    {
     c = a + b;
     a = b;
     b = c;
     if(c<=n)
     {
      cout << c  << " ";
     }
     i++;
    }
 
   getch();
   return 0;
}
Almat29
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 26
12.01.2014, 10:05  [ТС]     Число Фибоначчи до числа n. Код неправильно работает #3
Спасибо большое, помог. Можешь объяснить что такое
C++
1
unsigned int c = 0
? Что оно делает и как можно это заменить?
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
12.01.2014, 11:41     Число Фибоначчи до числа n. Код неправильно работает #4
Блин народ Ну правда объясните почему это работает не так как надо???
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
   int a, b, c, n;
   a=b=1;
 
   cout << "Input num >1: ";
   cin >> n;
 
   for(int i=0; i<n; i++){
       c = a+b;
       a += b;
       b += c;
 
       cout << "Fibo num: " << c << endl;
 
       if(c >= n) break;
   }
 
   return 0;
}
Добавлено через 26 минут
Ох Понял Переделал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
   int a, b, n;
   a=b=1;
 
   cout << "Input num >1: ";
   cin >> n;
 
   for(int i=0; i<n; i++){
       a = a+b;
       b = a-b;
 
       cout << "Fibo num: " << a << endl;
 
       if(a >= n) break;
   }
 
   return 0;
Но последнее число проскакивает Как исправить?
Ev_Hyper
Заблокирован
12.01.2014, 11:49     Число Фибоначчи до числа n. Код неправильно работает #5
1. Проверка выхода уже после вывода -> 1 число будет больше чем заданное ограничение.
2. У вас всегда будет a=c, поэтому одна переменная лишняя.
3. Вы суммируете на каждой итерации по 2-м переменным, а значит число последовательности пропускаете при выводе.

C++
1
2
3
4
5
6
7
8
9
    for(int i=0; i<n; i++){
       a += b;
       if(a >= n) break;
       cout<<"F: "<<a<<endl;
       b += a;
       if(b>=n) break;
       cout<<"F: "<<b<<endl;
     
   }
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
12.01.2014, 12:24     Число Фибоначчи до числа n. Код неправильно работает #6
Вот так нормально работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
   int a, b, n;
   a=b=1;
 
   cout << "Input num >1: ";
   cin >> n;
 
   for(int i=0; i<n; i++){
       a = a+b;
       b = a-b;
 
       if(a >= n) break;
 
       cout << "Fibo num: " << a << endl;
 
   }
 
   return 0;
}
Ev_Hyper
Заблокирован
12.01.2014, 12:34     Число Фибоначчи до числа n. Код неправильно работает #7
Это то, о чем я говорил в п.1
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
12.01.2014, 13:15     Число Фибоначчи до числа n. Код неправильно работает #8
Вариант с рекурсией
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 fibo(int n){
    if((n==1) || (n==2)) return 1;
        return (fibo(n-1)+fibo(n-2));
}
 
int main(){
 
    int n, num;
    n=3;
 
    cout << "Input Fibo's max num ";
    cin >> num;
 
    while(n <= num){
        if(fibo(n) > num) break;
        cout << "Fibo num: " << fibo(n) << endl;
        n++;
    }
    return 0;
}
Sasha
4850 / 2324 / 228
Регистрация: 05.06.2008
Сообщений: 7,292
Записей в блоге: 3
12.01.2014, 16:48     Число Фибоначчи до числа n. Код неправильно работает #9
Цитата Сообщение от Almat29 Посмотреть сообщение
unsigned int c = 0
Без знаковый тип данных
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2014, 05:49     Число Фибоначчи до числа n. Код неправильно работает
Еще ссылки по теме:

Получив на вход число x, напечатает два числа a и b (помогите исправить код) C++
Числа Фибоначчи в длинной арифметике (код почти готов, но я застолбил) C++
C++ Не работает функциея синус и неправильно выводятся числа
Написать код, который бы вычислял число Фибоначчи n раз C++
Фибоначчи: почему не работает код? C++

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

Или воспользуйтесь поиском по форуму:
Almat29
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 26
13.01.2014, 05:49  [ТС]     Число Фибоначчи до числа n. Код неправильно работает #10
Всем огромное спасибо! Все работает
Yandex
Объявления
13.01.2014, 05:49     Число Фибоначчи до числа n. Код неправильно работает
Ответ Создать тему
Опции темы

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