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

Шаблон задаваемого с клавиатуры динамического массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти наименьший номер члена последовательности, для которого выполняется условие |an-an-1|< ε http://www.cyberforum.ru/cpp-beginners/thread212065.html
не работает код для данной задачи: Найти наименьший номер члена последовательности, для которого выполняется условие |an-an-1|< ε. Вывести на экран этот номер и все элементы ai , где i=1,2,3…,n. an=1/2*tg an-1,a=0,5 #include <iostream> #include <cmath> using namespace std; void search(double eps);
C++ Работа со строками. Замена слов местами. первое слово со вторым, третье с четвертым и т д. необходима программа, которая считывает строку, и меняет местами два соседних слова, т.е. первое со вторым, третье с четвертым. разделители для слов - " ", "." "!" "?" "," второе слово в массиве заносить в массив "buffer" и первое смещать на место второго, затем из "buffer" запихиваем слово на место первого. как бэээ так заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread212061.html
[Visual C++] Число Эйлера (экспонента) в c++ C++
В общем в c++ нужно задать число Эйлера вот по такой вот формуле: http://s2.ipicture.ru/uploads/20101215/SixqXWD5.png Помогите с кодом, у меня с рядами не очень получается. Можно без факториала. Спасибо заранее.
метод ньютона C++
методом ньютона найти корень уравнения 0.3arctg(x)-x-1
C++ Создать класс "Очередь букв" (queue, "первым поступил — первым обслужен!") http://www.cyberforum.ru/cpp-beginners/thread212039.html
Создать класс "Очередь букв" (queue, "первым поступил — первым обслужен!"), в котором хранятся массив с буквами (char) длинной 5 и кол-во елементов очереди. Создать такие методы : (1) конструктор, (2) деструктор, который сообщает о ликвидации объекта и кол-ве ликвидированных объектов (если в момент ликвидации очередь не пустая), (3) метод "enqueue" , который присоединяет к очереди элемент, если...
C++ Нужна подсказка в создании программы. помогите решить эту задачу. УСЛОВИЕ: Для каждой строки матрицы, расположенной между минимальным и максимальным элементами главной диагонали, накопить произведение ненулевых элементов и подсчитать число элементов, не участвовавших в накоплении. Матрица квадратная, число строк не более 10. Формат числа цц.ц. Мат. постановка (на всякий случай): Дано: A i= 1, N n ≤ 10 Найти:max A = max... подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2908 / 1337 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
15.12.2010, 22:56     Шаблон задаваемого с клавиатуры динамического массива
А пожалуйста. Шаблон класса одномерного массива.
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
#include <iostream>
#include <exception>
#include <stdexcept>
 
using namespace std;
 
template <class _Tp>
class Vector
{
public:
        typedef _Tp value_type;
        typedef value_type* pointer;
protected:
        pointer* _data_start;
        pointer* _data_finish;
        pointer* _data_end_of_storage;
 
        void quickSort(int left, int right, bool (*compare)(const _Tp&, const _Tp&))
        {
                int i = left, j = right;
                value_type pivot = at((left + right) / 2);
 
                /* partition */
                while (i <= j)
                {
                        while (compare(at(i), pivot))
                                i++;
                        while (compare(pivot, at(j)))
                                j--;
                        if (i <= j)
                        {
                                pointer tmp = _data_start[i];
                                _data_start[i] = _data_start[j];
                                _data_start[j] = tmp;
                                i++;
                                j--;
                        }
                };
 
                /* recursion */
                if (left < j)
                        quickSort(left, j, compare);
                if (i < right)
                        quickSort(i, right, compare);
}
 
 
 
public:
        Vector(int n, unsigned int max_capacity = 0) : _data_start(0), _data_finish(0), _data_end_of_storage(0)
        {
                if (n > max_capacity)
                        max_capacity = n+1;
                _data_start = new pointer[max_capacity];
                _data_finish = _data_start + n;
                _data_end_of_storage =_data_start + max_capacity;
 
                for (int i = 0; i<size(); i++)
                        _data_start[i] = new value_type;
        }
        Vector(void) : _data_start(new pointer[1]), _data_finish(_data_start), _data_end_of_storage(_data_start+1) {}
        Vector(const Vector<_Tp>& other)
        {
                _data_start = new pointer[other.capacity()];
                _data_finish = _data_start + other.size();
                _data_end_of_storage =_data_start + other.capacity();
 
                for (int i = 0; i<size(); i++)
                        _data_start[i] = new value_type(other[i]);
        }
 
        virtual value_type& push_back(const value_type value)
        {
                if (!(_data_finish < _data_end_of_storage))
                        reserve(capacity()+2);
                *_data_finish = new value_type(value);
                _data_finish++;
        }
 
        void sort(bool (*compare)(const _Tp&, const _Tp&))
        {
                quickSort(0, size()-1, compare);
        }
 
        void reserve(int new_capacity)
        {
                pointer* _new_data_start = new pointer[new_capacity];
                int new_size = (size()>new_capacity)?new_capacity:size();
 
                for (int i = 0; i<new_size; i++)
                        _new_data_start[i] = _data_start[i];
 
                delete [] _data_start;
 
                _data_start = _new_data_start;
                _data_finish = _data_start + new_size;
                _data_end_of_storage = _new_data_start + new_capacity;
        }
 
        Vector<_Tp> operator= (const Vector<_Tp>& other)
        {
                if (this!=&other)
                {
                        if (_data_start!=0)
                                delete _data_start;
                        _data_start = new pointer[other.capacity()];
                        _data_finish = _data_start + other.size();
                        _data_end_of_storage =_data_start + other.capacity();
                        for (int i = 0; i<size(); i++)
                                _data_start[i] = new value_type(other[i]);
                }
                return *this;
        }
 
        virtual value_type& operator[](unsigned int n) const { return *(_data_start[n]); }
        virtual value_type& operator[](unsigned int n) { return *(_data_start[n]); }
 
        virtual value_type& at(int n) const { return *(_data_start[n]); }
        virtual value_type& at(int n) { return *(_data_start[n]); }
 
        unsigned int size() const { return (_data_finish - _data_start); }
        unsigned int capacity() const { return (_data_end_of_storage - _data_start); }
 
        ~Vector()
        {
                for (int i=0; i<size(); i++)
                        delete _data_start[i];
                delete [] _data_start;
        }
};
 
int main()
{
     Vector<int> A;
     A.push_back(5);
     A[0] = 3;
     return 0;
}
 
Текущее время: 17:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru