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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
AnGie
Сообщений: n/a
05.05.2013, 14:00     Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число элементов и переменную состояния #1
Помогите пожалуйста, нужно написать код на с++
Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число элементов и переменную состояния. Определить конструктор без параметров, конструктор с параметром, конструктор с двумя параметрами. Конструктор без параметров выделяет место для одного элемента и инициализирует его в ноль. Конструктор с одним параметром, - размер вектора, - выделяет место и инициализирует номером в массиве, конструктор с двумя параметрами выделяет место (первый аргумент) и инициализирует вторым аргументом. Деструктор освобождает память. Определить функцию, которая присваивает элементу массива некоторое значение (параметр по умолчанию), функцию которая получает некоторый элемент массива. В переменную состояния устанавливать код ошибки, когда не хватает памяти, выходит за пределы массива. Определить функцию печати. Определить функции сложения, умножения, вычитания, которые производят эти арифметические операции с данными этого класса и встроенного long. Определить методы сравнения: больше, меньше или равно. Предусмотреть возможность подсчета числа объектов данного типа. Проверить работу этого класса.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 14:00     Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число элементов и переменную состояния
Посмотрите здесь:

C++ Создать абстрактный тип данных - класс вектор
Создать абстрактный тип данных-класс вектор C++
Создать абстрактный класс A, который включает в себя: C++
Создать абстрактный базовый класс Point, который включает в себя: C++
Создать абстрактный тип данных (структура) - вектор, который имеет указатель на short и число элементов C++
C++ Создать абстрактный тип данных (структура) - окно
C++ тип данных С++, который в переменную вместит 10^100 о_О
Создать абстрактный тип данных - класс вектор C++
Создать абстрактный тип данных (структура) - картина, у которой есть название, автор, стоимость C++
Создать абстрактный тип данных (структура) — вектор, который имеет указатель на int и число элементов C++
C++ Абстрактный класс. Виртуальный метод, который возвращает T- тип
Создать класс Point, который имеет два закрытых члена класса (координаты) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
05.05.2013, 15:33     Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число элементов и переменную состояния #2
Цитата Сообщение от AnGie Посмотреть сообщение
инициализирует номером в массиве
Так делать не стоит, конечно, ну да ладно.
Цитата Сообщение от AnGie Посмотреть сообщение
В переменную состояния устанавливать код ошибки, когда не хватает памяти, выходит за пределы массива.
Это надо делать исключениями, а не "переменными состояния".

Ну, как-то так.
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
#include <iostream>
#include <stdexcept>
 
class VectorOfLong {
 public:
  VectorOfLong() : size(1), data(new long int[size]()) {}
  VectorOfLong(size_t size) : size(size), data(new long int[size]) {
    for (size_t i = 0; i < size; ++i) {
      data[i] = i;
    }
  }
  VectorOfLong(int size, long int initializer) : size(size),
    data(new long int[size]) {
    setAllTo(initializer);
  }
  VectorOfLong(const VectorOfLong &other) {
    copyFrom(other);
  }
  VectorOfLong &operator=(const VectorOfLong &other) {
    return copyFrom(other);
  }
  virtual ~VectorOfLong() {
    delete [] data;
  }
  long int &get(size_t position) {
    if (position >= size) {
      throw std::out_of_range("index went out of range");
    }
    return data[position];
  }
  const long int &get(size_t position) const {
    if (position >= size) {
      throw std::out_of_range("index went out of range");
    }
    return data[position];
  }
  void set(size_t position) {
    if (position >= size) {
      throw std::out_of_range("index went out of range");
    }
    data[position] = 0;
  }
  void set(size_t position, long int value) {
    if (position >= size) {
      throw std::out_of_range("index went out of range");
    }
    data[position] = value;
  }
  size_t getSize() const { return size; }
  void setAllTo(long int value) {
    for (size_t i = 0; i < size; ++i) {
      data[i] = value;
    }
  }
  VectorOfLong &copyFrom(const VectorOfLong &other) {
    if (this != &other) {
      size = other.size;
      delete [] data;
      data = new long int[size];
      for (size_t i = 0; i < size; ++i) {
        data[i] = other.data[i];
      }
    }
    return *this;
  }
  static size_t getMaximumSize() { return static_cast<size_t>(-1); }
 private:
  size_t size;
  long int *data;
};
 
std::ostream &operator<<(std::ostream &stream, const VectorOfLong &v) {
  stream << "[";
  for (size_t i = 0; i < v.getSize(); ++i) {
    stream << v.get(i);
    if (i < v.getSize() - 1) stream << ", ";
  }
  return stream << "]";
}
 
int main(int argc, char *argv[]) {
  VectorOfLong v(10);
  v.set(9);
  v.set(3, 4);
  std::cout << v << std::endl;
  return 0;
}
Yandex
Объявления
05.05.2013, 15:33     Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число элементов и переменную состояния
Ответ Создать тему
Опции темы

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