Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cassert>
- using namespace std;
- //Указатель, который используется для хранения адреса памяти под массив.
- int* buffer;
- //Текущее колличество элементво в массиве.
- unsigned array_size;
- //Максимальное количество элементов в массиве.
- unsigned capacity;
- //Инициализация массива.
- //Выполняется один раз перед тем, как будет использоваться массив.
- void init_array() {
- capacity = 2000;
- buffer = new int[capacity];
- }
- //Освобождение ресурсов массива.
- //Выполняется один раз перед тем, как массив прекратит использоваться.
- void destroy_array() {
- delete[] buffer;
- buffer = nullptr;
- capacity = 0;
- }
- //Добавление нового элемента в массив.
- void add_element(const int& element)
- {
- for (int i = element; i < capacity; i++) {
- if (i > element) {
- break;
- }
- else {
- buffer[i] = element;
- }
- }
- }
- //Получить значение элемента по его индексу.
- //Если индекс некорректный (меньше 0, или слишком большой) - нужно кинуть исключение
- // (я показываю в примере ниже, как это делать).
- const int& get_element(const unsigned& index) {
- if (index < 0 || index > capacity) {
- throw std::runtime_error("index is invalid");
- }
- else {
- return buffer[index];
- }
- }
- //Следующие тесты должны выполняться (программа должна успешно запускаться).
- //Менять тесты нельзя.
- //Менять мои заглушки на функции нельзя.
- void check_preconditions() {
- assert(array_size == 0);
- assert(capacity == 0);
- assert(buffer == nullptr);
- }
- void can_init_and_destroy_new_array_test() {
- init_array();
- destroy_array();
- check_preconditions();
- }
- void can_add_elements_to_array_test() {
- init_array();
- for (int i = 0; i < 2000; ++i) {
- add_element(i);
- }
- for (int i = 0; i < 2000; ++i) {
- int current_element = get_element(i);
- assert(current_element == i);
- }
- destroy_array();
- check_preconditions();
- }
- int main()
- {
- can_init_and_destroy_new_array_test();
- can_add_elements_to_array_test();
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement