0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 26
1

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

12.01.2014, 03:47. Показов 636. Ответов 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.

Кто знает в чем проблема или как код изменить, помогите пожалуйста
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2014, 03:47
Ответы с готовыми решениями:

Правильно ли работает код поиск N-го числа Фибоначчи
Можете сказать правильно ли работает код поиск N-го числа Фибоначчи using System; using...

Дано целое число N (> 1), являющееся числом Фибоначчи: N = FK . Найти целое число K — порядковый номер числа Фибоначчи N
помогите пожалуйста на с написать, или хотя бы какой нить толчок сделать. Дано целое число N (&gt; 1),...

Определить номер N числа Фибоначчи, при котором сумма N первых чисел Фибоначчи превышает заданное число М
Определить номер N числа Фибоначчи, при котором сумма N первых чисел Фибоначчи превышает заданное...

Вводится целое число F. Найти число n, для которого значение n-ого числа Фибоначчи является ближайшим числу F, но не бол
Вводится целое число F. Найти число n, для которого значение n-ого числа Фибоначчи является...

9
4954 / 2418 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 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;
}
1
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 26
12.01.2014, 10:05  [ТС] 3
Спасибо большое, помог. Можешь объяснить что такое
C++
1
unsigned int c = 0
? Что оно делает и как можно это заменить?
0
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 495
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;
Но последнее число проскакивает Как исправить?
1
Заблокирован
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;
     
   }
1
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 495
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;
}
1
Заблокирован
12.01.2014, 12:34 7
Это то, о чем я говорил в п.1
1
48 / 48 / 6
Регистрация: 24.12.2009
Сообщений: 495
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;
}
1
4954 / 2418 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
12.01.2014, 16:48 9
Цитата Сообщение от Almat29 Посмотреть сообщение
unsigned int c = 0
Без знаковый тип данных
1
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 26
13.01.2014, 05:49  [ТС] 10
Всем огромное спасибо! Все работает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.01.2014, 05:49
Помогаю со студенческими работами здесь

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

Неправильно работает код!
Пишу на юнити 3д код для анимации при ходьбе вот код и ошибка: using UnityEngine; using...

неправильно работает код
var Form1: TForm1; A:array of integer; i,max,min,s:integer; n:real;...

Неправильно работает код
def lol(s,k): k %= len(s) i = 0 for j in range(len(s)-k): s, s = s, s ...

Неправильно работает код
Пишу парсер.Вот кусочек кода : private void GetRGB(string Line, ColorRGB C_RGB, int Step, int X,...

Неправильно работает код
Подскажите где ошибка, код должен передовать вопросы в одну переменную, а ответы в другую, но в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru