#include using namespace std; class Array { private: int start; int end; int *array; public: Array(int n); Array(int n, int m); int &operator[](int index); Array &operator=(Array a); bool operator==(Array &a); bool operator!=(Array &a); friend ostream &operator<<(ostream &out, Array &a); friend Array &operator+(Array &a, Array&b); friend Array &operator-(Array &a, Array&b); friend Array &operator*(Array &a, Array&b); friend Array operator/(Array &a, Array&b); }; Array::Array(int n) { start = 0; end = n-1; array = new int[n]; for (int i = 0; i < n; i++) array[i] = i+1; } Array::Array(int n, int m) { start = n; end = m-1; array = new int[m-n]; for (int i = 0; i < m-n; i++) array[i] = start + i; } int &Array::operator[](int index) { int element; if (index >= start && index <= end) { element=array[index-start]; } else { cout << \"Error: Index out of bounds.\" << endl; element=-1; } int &p=element; return p; } Array &Array::operator=(Array a) { start = a.start; end = a.end; for(int i = 0; i < end - start; ++i) { array[i] = a.array[i]; } return *this; } bool Array::operator==(Array &a) { for(int i = 0; i < end - start; ++i) { if(array[i] != a.array[i]) return false; } return true; } bool Array::operator!=(Array &a){ return *this == a; } ostream &operator<<(ostream &out, Array &b) { for(int i = 0; i < b.end - b.start; ++i) { out << \"(\" << i + b.start << \")\" << b.array[i] << \" \"; } return out; } Array& operator+(Array &a, Array&b) { Array arr(a.end - a.start); for(int i = 0; i < a.end - a.start; ++i) { arr.array[i] = a.array[i] + b.array[i]; } Array &p=arr; return p; } Array &operator-(Array &a, Array&b) { Array arr(a.end - a.start); for(int i = 0; i < a.end - a.start; ++i) { arr.array[i] = a.array[i] - b.array[i]; } Array &p=arr; return p; } Array &operator*(Array &a, Array&b) { Array arr(a.end - a.start); for(int i = 0; i < a.end - a.start; ++i) { arr.array[i] = a.array[i] * b.array[i]; } Array &p=arr; return p; } Array operator/(Array &a, Array&b) { Array arr(a.end - a.start); for(int i = 0; i < a.end - a.start; ++i) { arr.array[i] = b.array[i] / a.array[i]; } Array &p=arr; return arr; } int main() { Array test(10); Array Ary1(10,25); Array Ary2(-5,10); Array Ary3(15,30); int i; int j; for (i = 0; i < 10; i++) test[i] = i+1; cout << \"Test array output\" << endl; for (i = 0; i < 10; i++) cout << test[i] << \" \"; cout << endl; i = -5; while (i < 10) { Ary2[i] = i*2; i++; } cout << \"\ \"; cout << \"Ary2 array otuput\" << endl; for (i = -5; i < 10; i++) cout << Ary2[i] << \" \"; cout << endl; i = 10; j = -5; while ( i < 25 ) { Ary1[ i ] = i*100; Ary2[j] = j * 200; i++; j++; }; cout << \"Ary1 array output\" << endl; cout << Ary1 << endl; cout << endl; cout << \"\ \"; Ary3 = Ary1 + Ary2; cout << \"Ary2 array Addition output\" << endl; cout << Ary3 << endl; cout << \"\ \"; Ary3 = Ary1 - Ary2; cout << \"Ary3 array Subtraction output\" << endl; cout << Ary3 << endl; cout << \"\ \"; Ary3 = Ary1 * Ary2; cout << \"Ary3 array Multiply output\" << endl.