Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- class MarksStorage
- {
- const size_t size;
- int* storage;
- static size_t count;
- public:
- static const int maxMark{ 12 };
- static const int minMark{ 1 };
- MarksStorage(size_t sizeP) : size{ sizeP }, storage{ new int[sizeP] {} } {std::cout << "Acquire memory for marks!\n"; ++count; }
- MarksStorage() : MarksStorage(1) {}
- bool setMark(size_t id, int mark)
- {
- if (id < 0 or id > size - 1 or mark < MarksStorage::minMark or mark > MarksStorage::maxMark) { return false; }
- storage[id] = mark;
- return true;
- }
- int getMark(size_t id)
- {
- if (id < 0 or id > size - 1) { return 0; }
- return storage[id];
- }
- static int getCount() { return count; }
- void print()
- {
- // ++size; // ERROR!!
- std::cout << "Marks: ";
- for (int i{ 0 }; i < size; ++i)
- {
- std::cout << storage[i] << ' ';
- }
- std::cout << '\n';
- }
- ~MarksStorage() { delete[] storage; std::cout << "Release memory from marks!\n"; --count; }
- };
- size_t MarksStorage::count{ 0 };
- int main()
- {
- std::cout << "MarksStorage count = " << MarksStorage::getCount() << '\n';
- {
- MarksStorage ms1{ 4 };
- ms1.setMark(0, 11);
- ms1.setMark(1, 7);
- ms1.setMark(2, 9);
- ms1.setMark(3, 10);
- ms1.print();
- std::cout << "ms1 count = " << ms1.getCount() << '\n';
- std::cout << "MarksStorage count = " << MarksStorage::getCount() << '\n';
- MarksStorage ms4{ 10 };
- std::cout << "MarksStorage count = " << MarksStorage::getCount() << '\n';
- }
- std::cout << "MarksStorage count = " << MarksStorage::getCount() << '\n';
- MarksStorage ms2;
- ms2.setMark(4, 11);
- ms2.print();
- ms2.setMark(0, 15);
- ms2.print();
- ms2.setMark(0, 9);
- ms2.print();
- std::cout << "ms2 count = " << ms2.getCount() << '\n';
- std::cout << "MarksStorage count = " << MarksStorage::getCount() << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement