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

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

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

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

12.01.2014, 03:47. Просмотров 403. Ответов 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.

Кто знает в чем проблема или как код изменить, помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2014, 03:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Число Фибоначчи до числа n. Код неправильно работает (C++):

Фибоначчи: почему не работает код? - C++
#include &lt;iostream&gt; using namespace std; int fib(int); int main() { for (size_t i = 0; i &lt;= 5; i++) {

Неправильно работает код - C++
Вот ссылка на код #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { cout&lt;&lt;&quot;Введите число &quot;&lt;&lt;endl; int...

Числа Фибоначчи - растолковать код - C++
Я тут хочу попрактиковаться в С++, а именно на числах Фебиначи. Я нашел хороший код и хочу его модифицировать, но мне нужно чтоб ктото...

Написать код, который бы вычислял число Фибоначчи n раз - C++
Помогите написать код который бы вычислял число Фибоначчи n-раз. Например: n=0 f=1, n=1 f=1, n=2 f=2, n=3 f=3, n=4 f=5, n=5 f=8, n=6...

Число Фибоначчи и рекурсия: код выдает неверные результаты - C++
Функция возвращает значение типа int, принимает 2 переменных типа int и 1 типа bool. Первая переменная - номер числа из ряда Фибоначчи...

Вставка слова в строку (неправильно работает код) - C++
Помогите пожалуйста. Нужно в строку вставить символы, то есть &quot;**&quot;(две звёздочки), после первого слова чётной длины, то есть все слова...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Sasha
4865 / 2339 / 235
Регистрация: 05.06.2008
Сообщений: 7,354
Записей в блоге: 3
12.01.2014, 07:03 #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  [ТС] #3
Спасибо большое, помог. Можешь объяснить что такое
C++
1
unsigned int c = 0
? Что оно делает и как можно это заменить?
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
12.01.2014, 11:41 #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 #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 #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 #7
Это то, о чем я говорил в п.1
ilja123
43 / 43 / 7
Регистрация: 24.12.2009
Сообщений: 392
12.01.2014, 13:15 #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
4865 / 2339 / 235
Регистрация: 05.06.2008
Сообщений: 7,354
Записей в блоге: 3
12.01.2014, 16:48 #9
Цитата Сообщение от Almat29 Посмотреть сообщение
unsigned int c = 0
Без знаковый тип данных
Almat29
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 26
13.01.2014, 05:49  [ТС] #10
Всем огромное спасибо! Все работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2014, 05:49
Привет! Вот еще темы с ответами:

Числа Фибоначчи в длинной арифметике (код почти готов, но я застолбил) - C++
Здравствуйте, дорогие форумчане. Есть такое задание, как написать код для 100 чисел Фибоначчи в длинной арифметике. Делал я его, делал, и...

Найти целое число k-порядковый номер числа фибоначчи - C++
Дано целое число N(&gt;1), являющееся числом Фибоначчи: N=Fk(число Фибоначчи Fk определяется следующим образом: F1=1 f2=1 Fk=Fk-2+Fk-1, K=3, 4...

Не работает функция синус и неправильно выводятся числа - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; #include &lt;math.h&gt; #define MAX_RAND 0x7fff ...

Проверьте задачку по циклам, неправильно работает. [думаю что неправильно] - C++
Спасибо что решили зайти. Задание выгладит так: http://*******/PW95p А результат выплнения: http://*******/KwhuS #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.01.2014, 05:49
Ответ Создать тему
Опции темы

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