Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- struct MyVector {
- double* arr;
- double* m;
- int cop, size;
- double min, max, arabge, stds;
- MyVector() {
- arabge = 0;
- stds = 0;
- cop = 2;
- size = 0;
- arr = new double[cop];
- m = new double[cop];
- }
- void maxminadd(double val) // изменяет максимум и минимум при добавлении нового элемента
- {
- int i = 0;
- while (i != size && val > m[i])
- i++;
- if (i == size)
- m[i] = val;
- else {
- for (int j = size; j > i; j--)
- m[j] = m[j - 1];
- m[i] = val;
- }
- max = m[size];
- min = m[0];
- }
- void maxmindel(double val) // изменяет максимум и минимум при удалении элемента
- {
- int i = 0;
- while (val != m[i])
- i++;
- for (int j = i; j < size; j++)
- m[j] = m[j + 1];
- max = m[size - 1];
- min = m[0];
- }
- void reallocate() //увеличивает размер массива
- {
- cop *= 2;
- double* a = new double[cop];
- for (int i = 0; i < size; i++)
- a[i] = arr[i];
- delete[] arr;
- arr = a;
- for (int i = 0; i < size; i++)
- a[i] = m[i];
- delete[] m;
- m = a;
- }
- void reallocate1() // уменьшает размер массива
- {
- cop /= 2;
- double* a = new double[cop];
- for (int i = 0; i < size; i++)
- a[i] = arr[i];
- delete[] arr;
- arr = a;
- for (int i = 0; i < size; i++)
- a[i] = m[i];
- delete[] m;
- m = a;
- }
- void add(double val) // добавление элемента в конец массива
- {
- if (size == cop) {
- reallocate();
- }
- arr[size] = val;
- maxminadd(val);
- arabge = (arabge * size + val) / (size + 1);
- stds = sqrt((stds * stds * size + (val - arabge) * (val - arabge)) / (size + 1));
- size++;
- }
- void del() // удаление последнего элемента массива
- {
- size--;
- if (size == cop / 4) {
- reallocate1();
- }
- maxmindel(arr[size]);
- arabge = (arabge * (size + 1) - arr[size]) / size;
- stds = sqrt(((stds * stds * (size + 1)) - ((arr[size] - arabge) * (arr[size] - arabge))) / size);
- }
- void set(int i, double val) // вставляет элемент в указанное место в массиве
- {
- int c = size - (i - 1);
- if (c >= cop) {
- reallocate();
- }
- for (int j = size; j >= i+1; j--)
- arr[j] = arr[j--];
- arr[i] = val;
- maxminadd(val);
- arabge = (arabge * size + val) / (size + 1);
- stds = sqrt((stds * stds * size + (val - arabge) * (val - arabge)) / (size + 1));
- size++;
- }
- void pop(int i) // удаляет указанный элемент
- {
- double g = arr[i];
- for (int j = i; j < size - 1; j++)
- arr[j] = arr[j + 1];
- size--;
- if (size == cop / 4)
- reallocate1();
- maxmindel(arr[size]);
- arabge = (arabge * (size + 1) - arr[size]) / size;
- stds = sqrt((stds * stds * (size + 1) - (arr[size] - arabge) * (arr[size] - arabge)) / size);
- }
- void sort() // вызов сортированного массива
- {
- for (int i = 0; i < size; i++)
- cout << m[i] << ' ';
- cout << endl;
- }
- double get(int i) // по индексу возращает сам элемент массива
- {
- return arr[i];
- }
- ~MyVector(){
- delete[] arr;
- delete[] m;
- }
- };
- int main()
- {
- MyVector v;
- v.add(11);
- for (int i = 0; i < v.size; i++)
- cout << v.get(i) << ' ';
- cout << "- min: " << v.min << " max: " << v.max << " arabge: " << v.arabge << " stds: " << v.stds << endl;
- v.add(12);
- for (int i = 0; i < v.size; i++)
- cout << v.get(i) << ' ';
- cout << "- min: " << v.min << " max: " << v.max << " arabge: " << v.arabge << " stds: " << v.stds << endl;
- v.del();
- for (int i = 0; i < v.size; i++)
- cout << v.get(i) << ' ';
- cout << "- min: " << v.min << " max: " << v.max << " arabge: " << v.arabge << " stds: " << v.stds << endl;
- v.set(1, 9);
- for (int i = 0; i < v.size; i++)
- cout << v.get(i) << ' ';
- cout << "- min: " << v.min << " max: " << v.max << " arabge: " << v.arabge << " stds: " << v.stds << endl;
- v.sort();
- system("pause");
- return 0;
- }
Add Comment
Please, Sign In to add comment