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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
koroleva
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 7
#1

Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы - C++

24.05.2011, 22:10. Просмотров 1803. Ответов 6
Метки нет (Все метки)

Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы. Безопасный вектор определяет переменные нижний и верхний предел Переопределить вывод в поток и ввод из потока, конструктор копирования, оператор присваивания через соответствующие функции базового класса.


что тут вообще надо сделать?? объясните словами!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2011, 22:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы (C++):

Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы - C++
Помогите не знаю как сделать! Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы. Безопасный...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс "вектор" с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Создать вектор классов - C++
у меня имеется класс с конструктором мне необходимо создать несколько объектов этого класса, так чтобы в любой момент времени была...

Создать классы "Вектор" и "Матрица", реализовать умножение матрицы на вектор - C++
Создать классы «Вектор (Строка, столбец)» и «Матрица». Реализовать умножение матрицы на вектор. я задал класс матриц,а как мне задать...

Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы - C++
Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы все фигуры, содержащие...

Не получается создать иерархию классов - C++
Пытаюсь реализовать что-то вроде шаблонного метода: основная логика отрисовки лежит в базовом классе Shape (какие цвета берем, что...

6
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
24.05.2011, 22:15 #2
В программировании нет королевских дорог...
Написано же словами...
Создайте класс для вектора.
Создайте класс-наследник для безопасного вектора.
Напишите конструктор копирования, напишите операцию присваивания.
Все - словами...

Не по теме:

Наш преподаватель по алгебре много лет назад предупреждал нас: занимайтесь ежедневно. Иначе через две недели наступит такое состояние, что на лекции все слова в ОТДЕЛЬНОСТИ будут понятны, в все ВМЕСТЕ - никак нет...

0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.05.2011, 22:15 #3
класс вектор - класс содержащий массив и методы по работе с массивом
безопасный вектор - тоже самое только, добавить проверку
Цитата Сообщение от koroleva Посмотреть сообщение
выхода за пределы
0
koroleva
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 7
24.05.2011, 22:20  [ТС] #4
Цитата Сообщение от Maxwe11 Посмотреть сообщение
проверку
какую проверку?? я не понимаю((((((((
0
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
24.05.2011, 22:51 #5
Цитата Сообщение от koroleva Посмотреть сообщение
какую проверку?? я не понимаю((((((((
Проверку "Вылет за границу". Индексы проверять надо!
0
koroleva
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 7
25.05.2011, 00:19  [ТС] #6
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Проверку "Вылет за границу". Индексы проверять надо!
какие индексы??(((((((
можете пример показать???

Добавлено через 27 минут
помогите(((

в четверг программу сдавать((((((((((((((
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
25.05.2011, 01:52 #7
Что-то вроде


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
#include <iostream>
 
template<class T>
class vector
{
public:
    vector():
      arr(0), size(0)
      {
      }
    vector(size_t sz):
      size(sz), arr(new T[sz])
      {
      }
    vector(const vector& other):arr(new T[other.size]), size(other.size)
    {
        for(size_t i = 0; i < other.size; ++i)
            arr[i] = other.arr[i];
    }
    ~vector()
    {
        delete[] arr;
    }
    vector& operator =(const vector& other)
    {
        vector temp(other);
        swap(temp);
        return *this;
    }
    T& operator [](size_t idx)
    {
        return arr[idx];
    }
    const T& operator [](size_t idx) const
    {
        return arr[idx];
    }
    template<class T2>
    friend std::ostream& operator <<(std::ostream& os, const vector<T2>& vec)
    {
        os << "Size: " << vec.size << '\n';
        for(size_t i = 0; i < vec.size; ++i)
            os << vec.arr[i] << ' ';
        os << '\n';
    }
    template<class T2>
    friend std::istream& operator >>(std::istream& is, vector<T2>& vec)
    {
        for(size_t i = 0; i < vec.size(); ++i)
            is >> vec.arr[i];
    }
    size_t getSize() const {return size;}
protected:
    void swap(const vector& other)
    {
        std::swap(arr, other.arr);
        std::swap(size, other.size);
    }
    void print(std::ostream& os)
    {
        os << *this;
        return os;
    }
    void input(std::istream& is)
    {
        is >> *this;
        return is;
    }
    T* arr;
    size_t size;
};
 
template<class T>
class vector_safe:public vector<T>
{
public:
    vector_safe(size_t l_idx, size_t u_idx):vector<T>(), lower_idx(l_idx),
        upper_idx(u_idx)
    {
    }
    vector_safe(size_t sz, size_t l_idx, size_t u_idx):vector<T>(sz), lower_idx(l_idx),
        upper_idx(u_idx)
    {
    }
    vector_safe(const vector_safe& other):vector<T>(other),
        lower_idx(other.lower_idx), upper_idx(other.upper_idx)
    {
    }
    vector_safe& operator =(const vector_safe& other)
    {
        vector_safe tmp(other);
        swap(tmp);
        return *this;
    }
    template<class T2>
    friend std::ostream& operator <<(std::ostream& os, const vector_safe<T2>& vec)
    {
        vec.print(os);
        os << vec.lower_idx << ' ' << vec.upper_idx << '\n';
        return os;
    }
    template<class T2>
    friend std::istream& operator >>(std::istream& is, vector_safe<T2>& vec)
    {
        vec.input(is);
        is >> vec.lower_idx >> vec.upper_idx;
        return is;
    }
    T& operator [](size_t idx)
    {
        if(idx < lower_idx || idx > upper_idx)
            throw std::runtime_error("idx < lower_idx || idx > upper_idx");
        return arr[idx];
    }
    const T& operator [](size_t idx) const
    {
        if(idx < lower_idx || idx > upper_idx)
            throw std::runtime_error("idx < lower_idx || idx > upper_idx");
        return arr[idx];
    }
private:
    void swap(const vector_safe& other)
    {
        vector<T>::swap(other);
        std::swap(lower_idx, other.lower_idx);
        std::swap(upper_idx, other.upper_idx);
    }
    size_t lower_idx;
    size_t upper_idx;
};
 
int main()
{
    vector_safe<int> vec(5, 0, 3);
    try
    {
        vec[0] = 0;
        vec[1] = 1;
        vec[2] = 2;
        vec[3] = 3;
        for(size_t i = 0; i < vec.getSize(); ++i)
            std::cout << vec[i] << '\n';
    }
    catch(const std::runtime_error& e)
    {
        std::cerr << e.what() << '\n';
    }
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 01:52
Привет! Вот еще темы с ответами:

Создать иерархию классов язык с++ - C++
Создать иерархию классов язык с++ Жидкость&lt;-Напиток Жидкость&lt;-Топливо Жидкость&lt;-Реагент Жидкость - абстрактный класс?...

Создать иерархию классов датчик - C++
Создать иерархию классов датчик – абстрактный базовый класс и датчики температуры, влажности и скорости ветра. Для каждого класса...

Отсортировать вектор классов - C++
есть вектор с полями mas.group и mas.zad первый тип строковый, второй int, короче нужно в векторе по полю &quot;групп&quot; сгруппировать, а zad...

Создать иерархию классов химических реакторов - C++
Помогите разобраться в задании: Создал базовый класс, определил в нем конструктор копирования, перегрузил оператор присваивания...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
25.05.2011, 01:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru