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

Вывести первые 100 чисел Фиббоначи - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.89
alinka_20
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 58
16.10.2012, 13:20     Вывести первые 100 чисел Фиббоначи #1
на вывести на с++ первые 100 чисел фиббаначи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.10.2012, 13:42     Вывести первые 100 чисел Фиббоначи #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    int arr[100];
    
    arr[0] = 0;
    arr[1] = 1;
    
    for (int i=2; i<100; i++)
        arr[i] = arr[i-1] + arr[i-2];
        
    for (int i=0; i<100; i++)
        cout << arr[i] << " ";
 
    return 0;
}
alinka_20
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 58
16.10.2012, 13:44  [ТС]     Вывести первые 100 чисел Фиббоначи #3
спасибо) а можно эту задачу использовать без массивов?
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
16.10.2012, 13:57     Вывести первые 100 чисел Фиббоначи #4
alinka_20, можно. Замените массив на 2 переменных и выводите все сразу на печать
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
16.10.2012, 14:46     Вывести первые 100 чисел Фиббоначи #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
в int поместится максимум 46 число, 97 число не поместится в тип unsigned long long int.
alinka_20
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 58
16.10.2012, 14:52  [ТС]     Вывести первые 100 чисел Фиббоначи #6
а можно в коде это написать))) пожалуйста)))
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
16.10.2012, 15:33     Вывести первые 100 чисел Фиббоначи #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
    int before_prev = 0;
    int prev = 1;
 
    std::cout << before_prev << " " << prev << " ";
    
    for (int i=2; i<100; i++)
    {
        int next = prev + before_prev;
        before_prev = prev;
        prev = next;
        std::cout << next << " ";
    }
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
16.10.2012, 15:40     Вывести первые 100 чисел Фиббоначи #8
Цитата Сообщение от doctor_lecter Посмотреть сообщение
в int поместится максимум 46 число, 97 число не поместится в тип unsigned long long int.
Придется использовать либо double (что даст только приближенные результаты), либо поискать длинную арифметику (форум+гугл)
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
16.10.2012, 20:45     Вывести первые 100 чисел Фиббоначи #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот точное решение:

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
#include <iostream.h>
 
// сложить 100-разрядные целые
 
void longAdd(char *a, char *b, char *c)
{
    int i,sh=0,aa,bb,cc;
    
    for (i=99; i>=0; i--) c[i]='0';
    for (i=99; i>=0; i--)
    {
 
        aa=a[i]-48;
        bb=b[i]-48;
        cc=aa+bb+sh;
 
        if (cc > 9)
        {
            sh=cc / 10;
            cc=cc % 10;
        }
        else
            sh=0;
 
        c[i]=cc+48;
    }
 
}
 
// Напечатать 100-разрядное целое
 
void longPrint(char *a)
{
    int i,j=0;
    for (i=0; i<= 99 ; i++)
    {
        if ((j == 0) && a[i] != '0') j=-1;
        if (j != 0) cout << a[i];
    }
}
 
int main(int argc, char* argv[])
{
    int i,j;
 
    char F1[100];
    char F2[100];
    char F3[100];
 
    for (i=0; i<=99; i++)
    {
        F1[i]='0';
        F2[i]='0';
    }
 
    F1[99]='1';
    F2[99]='1';
 
    longPrint(F1);
    cout << endl;
 
    longPrint(F2);
    cout << endl;
 
// Собственно, алгоритм...
 
    for (i=2; i<=100; i++)
    {
        longAdd(F1,F2,F3);
        longPrint(F3);
        cout << endl;
 
        for (j=0; j<=99; j++)
        {
            F1[j]=F2[j];
            F2[j]=F3[j];
        }
    }
    
    cout << endl;
 
    return 0;
}
Программа выводит 101 число Фибоначчи (с затравкой 1 1):
Миниатюры
Вывести первые 100 чисел Фиббоначи  
alinka_20
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 58
18.10.2012, 10:28  [ТС]     Вывести первые 100 чисел Фиббоначи #10
почему окошко,на котором выведены числа, появляется на секунду и тут же исчезает?
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
18.10.2012, 11:04     Вывести первые 100 чисел Фиббоначи #11
В 82-й строке напиши:

C++
1
   cin >> i;
хАЛЕКСЕЙх
 Аватар для хАЛЕКСЕЙх
8 / 8 / 2
Регистрация: 11.10.2012
Сообщений: 118
18.10.2012, 12:09     Вывести первые 100 чисел Фиббоначи #12
Цитата Сообщение от alinka_20 Посмотреть сообщение
почему окошко,на котором выведены числа, появляется на секунду и тут же исчезает?
Цитата Сообщение от Catstail Посмотреть сообщение
cin >> i;
Это неправильно, добавь библиотеку
C++
1
#include <stdlib.h>
и вконце перед
C++
1
return 0;
добавь
C++
1
system("pause");
alinka_20
1 / 1 / 0
Регистрация: 11.10.2012
Сообщений: 58
18.10.2012, 12:15  [ТС]     Вывести первые 100 чисел Фиббоначи #13
спасибо большое))
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
18.10.2012, 12:43     Вывести первые 100 чисел Фиббоначи #14
Цитата Сообщение от хАЛЕКСЕЙх Посмотреть сообщение
Это неправильно,
- так уж и неправильно?..
хАЛЕКСЕЙх
 Аватар для хАЛЕКСЕЙх
8 / 8 / 2
Регистрация: 11.10.2012
Сообщений: 118
18.10.2012, 13:17     Вывести первые 100 чисел Фиббоначи #15
Цитата Сообщение от Catstail Посмотреть сообщение
- так уж и неправильно?..
Но код
C++
1
cin >> i;
Это не то, есть ведь специальные готовые функции, а то что вы написали
я бы назвал лжефункцию(имею ввиду, как бы остановки закрытия консоли)
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
18.10.2012, 14:44     Вывести первые 100 чисел Фиббоначи #16
Цитата Сообщение от хАЛЕКСЕЙх Посмотреть сообщение
Это не то, есть ведь специальные готовые функции, а то что вы написали
я бы назвал лжефункцию(имею ввиду, как бы остановки закрытия консоли)
- ни склада, ни падежей...
хАЛЕКСЕЙх
 Аватар для хАЛЕКСЕЙх
8 / 8 / 2
Регистрация: 11.10.2012
Сообщений: 118
18.10.2012, 15:09     Вывести первые 100 чисел Фиббоначи #17
Цитата Сообщение от Catstail Посмотреть сообщение
- ни склада, ни падежей...
Можно и так как вы хотите: иммею ввиду, как бы остановкУ закрытия консоли
Catstail
Модератор
 Аватар для Catstail
21501 / 10254 / 1670
Регистрация: 12.02.2012
Сообщений: 17,139
18.10.2012, 15:25     Вывести первые 100 чисел Фиббоначи #18
Да, согласен... pause - аккуратнее.
cin_cout
25 / 25 / 7
Регистрация: 06.10.2012
Сообщений: 114
18.10.2012, 15:43     Вывести первые 100 чисел Фиббоначи #19
Цитата Сообщение от alinka_20 Посмотреть сообщение
на вывести на с++ первые 100 чисел фиббаначи
Не многовато ли чисел фибо? ))

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "std_lib_facilities.h"
int main () {
     double a=0;
     double b=1;
     double n;
     
     for (int i=0; i<100; ++i){
         n=a+b; 
         a=b;
         b=n;        
        
         cout << n << '\n';      
        }
    keep_window_open(); // это функция Страуструпа, чтобы окошко консоли не закрывалось, присутствует в его файле std_lib_facilities - файл можно скачать с сайта [url]http://stroustrup.com/[/url]
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 15:54     Вывести первые 100 чисел Фиббоначи
Еще ссылки по теме:

Последовательность 100 чисел. Вывести в порядке 2, 99, 4, 97, 6, 95, ., 96, 5, 98, 3 C++
C++ Вывести первые 10 чисел
Вывести на экран первые сто простых чисел, пропуская каждое второе C++

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

Или воспользуйтесь поиском по форуму:
JlightenDev_C++
 Аватар для JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
18.10.2012, 15:54     Вывести первые 100 чисел Фиббоначи #20
Поставь перед return, system("PAUSE"); или из библиотеки conio.h функцию getch();
Yandex
Объявления
18.10.2012, 15:54     Вывести первые 100 чисел Фиббоначи
Ответ Создать тему
Опции темы

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