// Schreibe eine Klasse Array, in der ein Zeiger des typs double* namens data deklariert wird. Reservieren sie im Konstruktor Speicher dafür und schreibene Sie setter und getter Methoden, um auf das Array data[index] zuzugreifen. Checken Sie, in der setter und getter Methode, ob der übergebene index zu groß oder zu klein ist und geben sie eine Fehlermeldung aus. #include class Array { private: double* data; int size; public: // Konstruktor Array(int n) { data = new double[n]; size = n; } // Destruktor ~Array() { delete[] data; } void resize(int newSize){ double *newData = new double[newSize]; for (int i = 0; i= size){ resize(index+100); } data[index] = value; } // Getter-Methode double getData(int index) { if (index < 0 ) { std::cerr << "Fehler: Index " << index << " ist ausserhalb des gültigen Bereichs (0 bis " << size - 1 << ")." << std::endl; return 0.0; // Standardwert bei Fehler } if (index >= size){ return 0.0; } return data[index]; } double& operator[](const int& index){ if (index < 0) { std::cerr << "Fehler: Index " << index << " ist ausserhalb des gültigen Bereichs (0 bis " << size - 1 << ")." << std::endl; return data[0]; } if (index >= size){ resize(index+100); } return data[index]; } // Methode zur Ausgabe des Arrays (zum Testen) void print() { for (int i = 0; i < size; ++i) { std::cout << "data[" << i << "] = " << data[i] << std::endl; } } }; // Beispielanwendung int main() { Array data(5); data[0] = 1.1; data[4] = 2.2; data[5] = 3.3; std::cout << "data[0] = " << data[0] << std::endl; std::cout << "data[4] = " << data[4] << std::endl; std::cout << "data[5] = " << data[5] << std::endl; // Fehlermeldung data.print(); return 0; }