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

Числа в Фибоначчиевой сс - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать третий массив из неповторяющихся элементов исходных массивов http://www.cyberforum.ru/cpp-beginners/thread533015.html
помогите плиз.. чет проблемы с массивом у меня ((( Задать два массива вещественных чисел с помощью датчика случайных чисел. Создать третий массив из неповторяющихся элементов исходных массивов, в результирующем массиве не должно быть повторов. На экран вывести как исходные данные, так и результирующий массив. На печать числа выводить с двумя знаками после запятой.
C++ надо решить в for, while, do while и нарисуйте блок схему плиз http://www.cyberforum.ru/cpp-beginners/thread533010.html
C++ функция. количество идущих подряд нулей.
Помогите пожалуйста написать эту функцию=.=
Считывание класса с виртуальным наследованием из бинарного файла C++
Рассмотрим простой пример. Допустим есть класс А, и производный от него класс В. Наследование виртуальное (обязательно). Создадим объект класса В и запишем в бинарный файл. Сразу же считаем, выводим на экран - всё работает. Выходим из программы, снова заходим, считываем, пытаемся вывести на экран и получаем ошибку. Без виртуального наследования (с обыкновенным наследованием) ошибки не возникает....
C++ Дан первый элемент последовательности и рекуррентная формула. Определить, сколько элементов... http://www.cyberforum.ru/cpp-beginners/thread532993.html
Написать на С+. Дан первый элемент последовательности a0=7 и рекуррентная формула a(i+1)=ai/(i+1)+i/ai . Определить, сколько элементов этой последовательности меньше введенного с клавиатуры значения.
C++ Указатели на указатели Есть указатель на тип int. Нужно написать функцию, которая бы принимала адрес этого указателя и присваивала ему адрес нового массива созданного внутри функции. Код: #include <stdio.h> #include <stdlib.h> #include <locale> void initArray(int**array_, int*m_size) { printf("Введите размер массива\n >> "); scanf("%d", &(*m_size)); подробнее

Показать сообщение отдельно
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.03.2012, 22:34     Числа в Фибоначчиевой сс
Ничего в голову не шло, добавил класс четверичной системы счисления(а вдруг). Подумываю над троичной. Но это завтра. Вот последний вариант, компилился с поддержкой c++11.
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
#include <string>
#include <iomanip>
#include <algorithm>
////////////////////////////////////////////////////////////////////////////////
class Number
{
protected:
    std::string num;
 
public:
    virtual ~Number()
    {
        //std::cerr << "Number~" << std::endl;
    }
    //reference
    friend std::ostream& operator << (std::ostream& stream, Number& n)
    {
        stream << n.num;
        return stream;
    }
    //rvalue reference
    friend std::ostream& operator << (std::ostream& stream, Number&& n)
    {
        stream << n.num;
        return stream;
    }
};
////////////////////////////////////////////////////////////////////////////////
class FibBin: public Number
{
    void addBit()
    {
        std::fill(num.begin(), num.end(), '0');
        num = "1" + num;
    }
 
public:
    FibBin(): Number()
    {
        num = "1";
    }
    //--------------------------------------------------------------------------
    FibBin& operator ++ ()
    {
        for
        (
            auto it = num.rbegin();
            it != num.rend();
            ++it
        )
        {
            if(*it == '1')
            {
                if(it + 1 == num.rend())
                {
                    addBit();
                    return *this;
                }
            }
            else if(*it == '0')
            {
                if(*(it + 1) == '0')
                {
                    std::fill(num.rbegin(), it, '0');
                    *it = '1';
                    return *this;
                }
            }
        }
        std::cerr << "something has happend" << std::endl;
    }
    //--------------------------------------------------------------------------
    const bool lastBit() const
    {
        return *num.rbegin() == '1';
    }
 
    /*friend std::ostream& operator << (std::ostream& stream, FibBin& fb)
    {
        stream << fb.num;
        return stream;
    }*/
};
////////////////////////////////////////////////////////////////////////////////
class Bin: public Number
{
public:
    Bin(unsigned n): Number()
    {
        num = "";
        while(n)
        {
            num = std::to_string(n & 1) + num;
            n >>= 1;
        }
    }
 
    /*friend std::ostream& operator << (std::ostream& stream, Bin&& b)
    {
        stream << b.num;
        return stream;
    }*/
};
////////////////////////////////////////////////////////////////////////////////
class Quat: public Number
{
public:
    Quat(unsigned n): Number()
    {
        num = "";
        while(n)
        {
            num = std::to_string(n & 3) + num;
            n >>= 2;
        }
    }
 
    /*friend std::ostream& operator << (std::ostream& stream, Quat&& q)
    {
        stream << q.num;
        return stream;
    }*/
};
////////////////////////////////////////////////////////////////////////////////
void func(int n)
{
    FibBin fb;
    std::cout << 1 << std::setw(16) << fb << std::endl;
    int last = 1;
    for(int i = 2; i <= n; ++i)
    {
        ++fb;
        if(fb.lastBit())
        {
            //if(i - last == 3)
            //    std::cout << std::endl;
            std::cout << i << '\t' << Bin(i) << '\t' << Quat(i) << '\t' << fb << ' ' << i - last << std::endl;
            last = i;
        }
    }
}
 
int main()
{
    func(500);
    //std::cout << std::endl;
    return 0;
}
 
Текущее время: 11:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru