/
Messus
/
t_ascii
Обзор
Документация
Войти
/
Messus
/
t_ascii
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
try.cpp
107 строк
2 KB
Messus
create try.cpp
05 мар 2025, 03:49
05 мар 2025, 03:49
26303b7
Код
Авторство
О чём код?
#include <iostream> #include <math.h> using namespace std; class general_error { public: char *message; general_error(char* message) {this->message=message;} }; class out_of_range { public: size_t i; out_of_range(size_t i) {this->i=i;} }; class overflow {}; class underflow {}; class array { size_t size; size_t capacity; double *data; public: array(size_t capacity); ~array(); double operator[](size_t i); void push(double v); double pop(); }; array::array(size_t capacity) { if (capacity==0) throw general_error("array capacity is zero"); this->capacity=capacity; size = 0; data = new double[capacity]; } array::~array() { delete[] data; } double array::operator[](size_t i) { if (i < size) return data[i]; else throw out_of_range(i); } void array::push(double v) { if (size < capacity) data[size++]=v; else throw overflow(); } double array::pop() { if (size > 0) return data[--size]; else throw underflow(); } int main() { char c; size_t i; double v; cout << "Type the massive capacity: "; cin >> v; array a(v); for (;;) { cout << "Type \"+\" for enter element," " \"-\" for insert element, \"i\" for view i-element, \"a\" for exit: "; cin >> c; try { switch (c) { case '+': cout << "Type the entering number: "; cin >> v; a.push(v); break; case '-': v=a.pop(); cout << "Insert number " << v << endl; break; case 'i': cout << "Type the index: "; cin >> i; v=a[i]; cout << "The looking for elemint is: " << v << endl; break; case 'a': return 0; break; } } catch(const out_of_range& e) { cout << "Try access to element undefined index " << e.i << endl; } catch(overflow) { cout << "No valid operation, overflow massive\n"; } catch(underflow) { cout << "No valid operation, the massive is empty\n"; } } }