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

фибоначчи( функции,массивы) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать структуру с именем TRAIN http://www.cyberforum.ru/cpp-beginners/thread427314.html
Описать структуру с именем TRAIN, содержащую следующие поля: название пункта назначения; номер поезда; время отправления. Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN; записи должны быть упорядочены по номерам поездов; вывод на экран информации о поезде, номер которого введён с клавиатуры; если таких...
C++ Как определить размер фаила с ifstream или как-то по другому? Как определить размер фаила с помощью ifstream или как-то по другому? http://www.cyberforum.ru/cpp-beginners/thread427299.html
C++ Какая версия Borland для MS-DOS 6.22?
Подскажите, какая версия Борланда с/с++ ставится на чистый DOS? ставил Borland 3.1, при установке он требует указать папку Windows. При запуске, вешает машину безвозвратно, хотя в DosBox работает нормально. Сейчас стоит MS-DOS 6.22 на VirtualBox.
Посчитать количество латинских букв на странице текста C++
как посчитать число латинских букв на странице текста
C++ Движение объекта по параболе http://www.cyberforum.ru/cpp-beginners/thread427266.html
Всем доброго времени суток, подскажите плиз как осуществить движение по параболе, или типо того У меня есть класс CEnemy в котором имеются поля int x,y; int speed; максимальные величины окна 800х600. Прилаживаю файл с графиком. Уже часа 3 морочусь, весь мозг сломал( Заранее спасибо!
C++ Определить количество дней в году. Дан номер года (положительное целое число). Определить количество дней в этом году, учитывая, что обычный год насчитывает 365 дней, а високосный — 366 дней. Високосным считается год, делящийся на 4, за исключением тех годов, которые делятся на 100 и не делятся на 400 (например, годы 300, 1300 и 1900 не являются високосными, а 1200 и 2000 – являются) подробнее

Показать сообщение отдельно
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.01.2012, 13:24
Либо так.
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
#include <iostream>
#include <vector>
#include <cmath>
#include <sstream>
#include <string>
#include <iomanip>
#include <cstdlib>
#include <cstdio>
 
class BigInteger
{
        std::vector<int> value;
        static const int base = 1e9;
        static const int count_of_digits = 9;
        
public:
 
        BigInteger() { value.push_back(0); }   
        BigInteger( const std::string& );
        BigInteger( long long );
        BigInteger& operator = ( long long );
        
        BigInteger& operator += ( const BigInteger& );
        
        friend BigInteger operator + ( const BigInteger&, const BigInteger& );
        
        friend std::istream& operator >> ( std::istream&, BigInteger& );
        friend std::ostream& operator << ( std::ostream&, const BigInteger& );
};
 
#define double BigInteger
 
double fib(int n) {
        double f1, f2, fn;
        int i;
        f1 = 1; f2 = 1;
        if (n == 0) return 0;
        else if ((n == 1) || (n == 2)) return 1;
        else for(i = 3; i <= n; ++i) {
                fn = f1 + f2;
                f1 = f2;
                f2 = fn;
        }
        return fn;
}
 
#undef double
 
int main() {
        int n;
        std::cout << "n pozicii: ";
        std::cin >> n;
        std::cout << n << " - oe chislo fib " << fib(n) << std::endl;
}
 
BigInteger& BigInteger::operator = ( long long n )
{
    this->value = BigInteger(n).value;
    return *this;
}
 
BigInteger::BigInteger( const std::string& str )
{
        for (int i = str.length() ; i > 0 ; i -= count_of_digits)
        {
                if ( i < count_of_digits )
                {
                        value.push_back( atoi( str.substr(0, i).c_str() ) );
                }
                else
                {
                        value.push_back( atoi( str.substr(i - count_of_digits, count_of_digits).c_str() ) );
                }
        }
}
 
BigInteger::BigInteger( long long x )
{
        std::ostringstream ost;
        ost << x;
        std::string str = ost.str();
        
        for (int i = str.length() ; i > 0 ; i -= count_of_digits)
        {
                if ( i < count_of_digits )
                {
                        value.push_back( atoi( str.substr(0, i).c_str() ) );
                }
                else
                {
                        value.push_back( atoi( str.substr(i - count_of_digits, count_of_digits).c_str() ) );
                }
        }
        
}
 
BigInteger& BigInteger::operator += ( const BigInteger& b )
{
        for ( int temp = 0, i = 0; i < (int) std::max( this->value.size(), b.value.size() ) || temp != 0 ; ++i)
        {
                if ( i == (int) value.size() )
                        value.push_back( 0 );
                
                value[i] += temp + ( i < (int) b.value.size() ? b.value[i] : 0 );
                temp = value[i] >= base;
                
                if ( temp != 0 )
                        value[i] -= base;
        }
        
        return *this;
}
 
BigInteger operator + ( const BigInteger& a, const BigInteger& b )
{
        BigInteger c = a;
        c += b;
        return c;
}
 
std::istream& operator >> ( std::istream& stream, BigInteger& big )
{
        std::string str;
        std::cin >> str;
        big = BigInteger(str);
        
        return stream;  
}
 
std::ostream& operator << ( std::ostream& stream, const BigInteger& big )
{
        if ( big.value.empty() )
                stream << 0;
        else
                stream << big.value.back();
                
        for (int i = (int) big.value.size() - 2; i >= 0; --i)
        {
                stream << std::setfill('0') << std::setw(BigInteger::count_of_digits) << big.value[i];
        }
        
        return stream;
}
Вашу функцию оставил неизменной.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru