Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
koroleva
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 7
1

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

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

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


что тут вообще надо сделать?? объясните словами!!!!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2011, 22:10
Ответы с готовыми решениями:

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

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

Как заполнить вектор на вектор классов
#include <iostream> #include <vector> class Num { private: int m_num; public: Num(int...

Создать вектор классов
у меня имеется класс с конструктором мне необходимо создать несколько объектов этого класса, так...

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

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

Не по теме:

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

0
Jupiter
Каратель
Эксперт С++
6580 / 4001 / 400
Регистрация: 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
Эксперт С++
1057 / 836 / 60
Регистрация: 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
В астрале
Эксперт С++
8010 / 4767 / 654
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 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
25.05.2011, 01:52
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2011, 01:52

Разработать иерархию классов Вектор, Матрицы, "Крамер"
1. Создать пространство имен Algebra. 2. Разработать класс Vector для манипуляции с векторами...

Матрица и вектор. Создать вектор, содержащий количество отрицательных элементов каждого столбца
Создать вектор М, т.е. одно мерный массив, содержащий количество отрицательных элементов каждого...

Дан целочисленный вектор А(12), среди его элементов есть одинаковые. Создать вектор В из различных элементов вектора А
Дан целочисленный вектор А(12), среди его элементов есть одинаковые. Создать вектор В из различных...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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