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

Просьба оценить код - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить ежедневные списки посещения медпункта http://www.cyberforum.ru/cpp-beginners/thread615966.html
Итак, задачка следующая - N сотрудников (известны фамилии) работают в две смены по индивидуальному графику (1-й день-"утро", 2-й день-"вечер", 3-й день-"выходной"). Все они в свое нерабочее время должны пройти диспансеризацию в медпункте, который работает ежедневно в две смены. В день начала диспансеризации о каждом сотруднике известно, в какую смену он работает, или то, что он выходной....
C++ Вычислить интеграл f(x)=5x(кв.)-x+2 методом прямоугольников Напишите программу вычисления интеграла f(x)=5x(кв.)-x+2 методом прямоугольников http://www.cyberforum.ru/cpp-beginners/thread615957.html
loop for C++
напишите пожалуйста loop for который выводит числа фибоначчи
C++ undefined reference
Пытаюсь разобраться с Box2D. Выпадает куча ошибок типа undefined reference to `b2World::b2World(b2Vec2 const&)'| Box2D.h файл подключен. Я 1ый раз подключаю Box2D, возможно нужен какой-то .lib файл, я не вдупляю. Помогите исправить ошибки, очень надо.
C++ Создать базовый класс Array, в котором определите поле-массив подходящего типа http://www.cyberforum.ru/cpp-beginners/thread615894.html
Всем привет!!! Создать базовый класс Array, в котором определите поле-массив подходящего типа и поле для хранения количества элементов у текущего объекта-массива. Максимально возможный размер массива задается статистической константой.реализуйте конструктор инициализации, задающий количество элементов и начальное значение (по умолчанию 0). Вот мои наработки: #include <iostream.h> #include...
C++ Запуск драйвера windows void setup() { WCHAR namebuff; //get path to ths .sys.file GetModuleFileNameW(0, namebuff,256); DWORD a = wcslen( (const wchar_t*)namebuff ) ; while(1) { if(namebuff == '\\') break; подробнее

Показать сообщение отдельно
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
28.06.2012, 19:36     Просьба оценить код
Данный код реализует массивы, размеры которых можно легко изменять, а так же которые можно легко склеивать. Прошу оценить его и покритиковать.


Element.h - Отвечает за элементы массива
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
template <typename T> class Element
{
        public:
                Element()
                {
                        _val = 0;
                        _next = NULL;
                }
                Element(T val)
                {
                        _val = val;
                        _next = NULL;
                }
                Element(T val, Element<T> &next)
                {
                        _val = val;
                        _next = &next;
                }
                void operator=(T val)
                {
                        _val = val;
                }
                Element<T>& operator>>(Element<T> &next)
                {
                        _next = &next;
                        return next;
                }
                Element<T>* operator>>(Element<T> *next)
                {
                        _next = next;
                        return next;
                }
                T& val(unsigned int index)
                {
                        if(index == 0) return _val;
                        
                        Element<T> *el = _next;
                        while(--index > 0) el = el->_next;
                        
                        return el->_val;
                }
                Element<T>* elm(unsigned int index)
                {
                        Element<T> *el = _next;
                        while(--index > 0) el = el->_next;
                        
                        return el;
                }
        private:
                Element<T> *_next;
                T _val;
};

Array.h - Отвечает за сам массив
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
template <typename T> class Array
{
        public:
                Array() 
                {
                        _len = 0;
                }
                Array(unsigned int len)
                {
                        _len = len;
                        
                        if(len-- == 0) return ; // if(len == 0) return ;
                        if(len-- == 0) return ; // if(len == 1) return ;
                        
                        Element<T> *el = new Element<T>;
                        _array >> el;
                        
                        if(len == 0) return ; // if(len == 2) return ;
                        
                        Element<T> *el2;
                        
                        for( ; len>0; --len)
                        {
                                el2 = new Element<T>;
                                (*el) >> el2;
                                el = el2;
                        }
                }
                ~Array()
                {
                        for(--_len; _len>0; --_len)
                        {
                                delete _array.elm(_len);
                        }
                }
                T& operator[](unsigned int index)
                {
                        return _array.val(index);
                }
                void operator>>(unsigned int len)
                {
                        if(len == 0) return ;
                        Element<T> *el, *el2;
                        
                        if(_len == 0 || _len == 1)
                        {
                                el = &_array;
                        } else {
                                el = _array.elm(_len - 1);
                        }
                        
                        _len += len;
                        
                        for( ; len>0; --len)
                        {
                                el2 = new Element<T>;
                                (*el) >> el2;
                                el = el2;
                        }
                }
                void operator<<(unsigned int len)
                {
                        for( ; len>0; --len)
                        {
                                delete _array.elm(--_len);
                        }
                }
                void operator<<(Array<T> &array)
                {
                        *(_array.elm(_len - 1)) >> array._array;
                        _len += array._len;
                }
                unsigned int length()
                {
                        return _len;
                }
        private:
                unsigned int _len;
                Element<T> _array; 
};

Main.cpp - Пример работы с массивом
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
#include <iostream>
using namespace std;
 
#include "Element.h"
#include "Array.h"
 
int main()
{
        Array<int> arr(5); // ñîçäГ*ГҐГІ Г¬Г*Г±Г±ГЁГў Г± 5Гѕ ГїГ·ГҐГЄГ*ìè [0..4];
            
        arr >> 2; // äîáГ*âëÿåò  2 ýëåìåГ*ГІГ* ГЄ Г¬Г*Г±Г±ГЁГўГі
        arr << 3; // ГіГ*è÷òîæГ*ГҐГІ 3 ïîñëåäГ*ГЁГµ ýëåìåГ*ГІГ* Г¬Г*Г±Г±ГЁГўГ*  
        for(int i=0; i<arr.length(); ++i) arr[i] = i+1; // Г§Г*ïîëГ*ГїГҐГІ Г¬Г*Г±Г±ГЁГў
        
        Array<int> arr_2(3);
        arr_2 << arr; // ïðèêëåèâГ*ГҐГІ Г¬Г*Г±Г±ГЁГў arr ГЄ ГЄГ®Г*öó Г¬Г*Г±Г±ГЁГўГ* arr_2
        
        for(int i=0; i<arr_2.length(); ++i)
        {
                cout << arr_2[i] << endl;
        }   
            
        while(1);
        return 0;
}



ЗЫ: да, я писал реализацию функций внутри класса, потому что для такого небольшого кода смысла выносить нету.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru