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

Класс с числами Фибоначчи

29.11.2016, 02:51. Показов 3106. Ответов 2
Метки нет (Все метки)

Вообщем в проблема вот в чем, написал программу для вычисления чисел Фибоначчи
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
int main(int i)
{
    int fib[10];
    fib[0]=0;
    fib[1]=1;
    for(int i=2; i<10; i++)
    {
        fib[i] = fib[i-1]+fib[i-2];
        cout<<fib[i]<<"\n";
    }
 
}
вроде работает))но теперь мне нужно забросить её в класс, делаю вот так
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
#include <iostream>
 
using namespace std;
class Newclass
{
    public:
        int fib[10];
        fib[0]=0;
        fib[1]=1;
    void show()
    {
 
        for(int i=2; i<10; i++)
    {
        
        fib[i] = fib[i-1]+fib[i-2];
        cout<<fib[i]<<"\n";
    }
    }
 
};
int main(int i)
{
    Newclass n1;
    n1.show();
    return 0;
}
но выдает ошибки на строках 8,9 и 16 на 21 предупреждение...
и еще мне нужно сделать этот класс что бы он был на 512 байт....помогите пожалуйста, уже второй день маюсь...!!заранее спасибо!

Добавлено через 7 минут
512 байт имею ввиду выделенную под него память
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2016, 02:51
Ответы с готовыми решениями:

Найти все натуральные числа меньше N, которые одновременно являются числами Фибоначчи и простыми числами.
Дано натуральное число N. Найти все натуральные числа меньше N, которые одновременно являются...

Программа с числами Фибоначчи на Си
Здравствуйте! Пожалуйста, помогите с задачей: Нужно ввести N с клавиатуры - это будет размер...

Заполнить массив числами фибоначчи
Задачка С++ : Заполнить массив числами фибоначчи (в которой каждое последующее число равно сумме...

Заполнение массива числами Фибоначчи
Ряд чисел Фибоначчи задается следующим образом: первые два числа равны 1 ( F 1 = F 2 = 1 ), а...

2
503 / 246 / 74
Регистрация: 31.10.2010
Сообщений: 741
29.11.2016, 03:28 2
svyrydovitaliy,
используйте
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
84
85
86
87
88
89
90
91
92
93
94
95
96
    // файл "mi_fib.h"
    /*
    Класс взаимного преобразования чисел 
    из десятичной системы счисления 
    в систему счисления Фибоначчи
    */
    // -----------------------------------------------------------------------------
    #ifndef mi_fibH
    #define mi_fibH
    // -----------------------------------------------------------------------------
    #include <string>
    // пространство имён
    using namespace std;
    // определение типа uint64 беззнаковый целый 64 бита
    // typedef uint_fast64_t uint64;          // C++11 or
    // typedef uint64_t uint64;               // C++11 or
    // typedef unsigned long long int uint64; // C++   or
    // для проверки sizeof(uint64) == 8
    typedef unsigned __int64 uint64;
    // класс реализации взаимных преобразований систем счисления
    // десятичная <=> фибоначчи
    class mi_fib {
     
    public:
      //   конструктор
      mi_fib() {
        fib = new uint64[65];
        fib[0] = 1;
        fib[1] = 2;
        for (int i = 2; i < 65; i++) {
          fib[i] = fib[i - 1] + fib[i - 2];
        }
      } ;
      // деструктор
      ~mi_fib() {
        if (fib) {
          delete[]fib;
          fib = 0;
        }
      } ;
      // ---------------------------------------------------------------------------
      // возвращает код числа в системе исчисления Фибоначчи:
      // Fibonacci : (0 1) 1 2 3 5 8 13 21 ...
      // например: (dec)50 = bin(dec)110010 = (fib)164 = bin(fib)10100100
      uint64 IntToFib(uint64 vf) {
        // если больше максимально допустимого генерируем исключительную ситуацию
        if (vf > 27777890035287)
          throw;
        // переменная результата
        uint64 res = 0;
        // если ноль сразу возвращаем результат
        if (vf == 0)
          return (res);
        // формируем число в системе исчисления Фибоначчи
        uint64 fixp = 0x01;
        for (int i = 63; i >= 0; i--) {
          if (vf == fib[i]) {
            res |= (fixp << i);
            break;
          }
          if (vf > fib[i]) {
            vf -= fib[i];
            res |= (fixp << i);
          }
        }
        // выходим
        return (res);
      }
      // ---------------------------------------------------------------------------
      // преоразование из сист. счисления фибоначчи в десятичную
      // возвращает значение uint64 числа в десятичной системе счисления
      uint64 FibToInt(uint64 vi) {
        // переменная результата
        uint64 res = 0;
        uint64 fixp = 0x01;
        for (int i = 0; i <= 63; i++) {
          res += fib[i] * (fixp & (vi >> i));
        }
        return (res);
      }
      // ---------------------------------------------------------------------------
      // функция преобразования числа
      // в системе счисления Фибоначчи в строку (двоичный формат)
      string IntToStrBin(uint64 a) {
        string bstr = "";
        do {
          (a % 2) ? bstr.insert(0, "1") : bstr.insert(0, "0");
          a /= 2;
        } while (a > 0);
        return bstr;
      }
      // ---------------------------------------------------------------------------
    private:
      uint64* fib;
    } ;
    #endif

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
    // пример эксплуатации класса mi_fib
    #include <string>
    #include <iostream>
    #include <stdlib.h>
    #include "mi_fib.h"
    // ---------------------------------------------------------------------------
     
    #pragma argsused
    // пространство имён
    using namespace std;
     
    int main() {
      uint64 numb;
      mi_fib fibconv;
     
      cout << "Введите число ограничивающее вывод таблицы соотвествия:" << endl;
      cin >> numb;
     
      cout << "Dec\tnumb\tFib" << endl;
      int j = 1000;
      while( j >= 0 ) {
       cout << numb << "\t" <<
        fibconv.IntToFib(numb) << "\t" <<
        fibconv.IntToStrBin(fibconv.IntToFib(numb)) << endl;
        if( !numb ) break;
        numb--;
        j--;
      }
     
      system("pause"); // пауза перед выходом из консоли (ОС Windows <stdlib.h>)
      return 0;
    }
    // ---------------------------------------------------------------------------
1
0 / 0 / 0
Регистрация: 16.11.2016
Сообщений: 11
29.11.2016, 05:17  [ТС] 3
Спасибо огромное.

Добавлено через 1 минуту
Еще пару вопросов, как мне сделать что бы выводило 100 чисел ряда Фибоначчи?и в кратце как мне сделать тип данных с выделенной памятью в 512 байт?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2016, 05:17
Помогаю со студенческими работами здесь

Заполнить матрицу числами Фибоначчи
Заполнить двумерный массив размерностью n x n следующим образом: первый ряд - числа Фибоначчи, а...

Заполнить массив числами Фибоначчи
Задание: создать массив и заполнить его числами Фибоначчи, которые будут создаваться рекурсией. ...

Класс: создать класс Fraction для работы с дробными числами
Необходимо создать класс Fraction для работы с дробными числами. Число должно быть представлено...

С++ класс (создайте класс с именем Complex для выполнения в арифмитических операий с комплексными числами))
Кто сможет помогите пожалуйста! (Класс Complex). Создайте класс с именем Complex для выполнения...


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

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

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