Реалізувати мовою С++ клас ArrayFloatPlus, що реалізує динамічний масив чисел типу float. У класі реалізовано: внутрішні змінні size, A, що описують розмір масиву та сам масив;
два конструктори, що ініціалізують початковими значеннями елементи масиву;
конструктор копіювання;
методи доступу GetSize(), SetSize(), GetAi(), SetAi(), які реалізують доступ до внутрішніх змінних масиву з відповідними операціями (виділення пам'яті, перевірка на допустимі межі);
операторна функція operator=(), що реалізує копіювання об'єктів;
операторна функція operator+(), яка реалізує навантаження оператора '+' для масивів типу ArrayFloatPlus. Операторна функція додає поелементно значення масивів, які є операндами операції +. деструктор.
Ответы
#include <iostream>
class ArrayFloatPlus {
private:
int size;
float* A;
public:
// Конструкторы
ArrayFloatPlus(int size = 0) {
this->size = size;
this->A = new float[size];
}
ArrayFloatPlus(int size, float* A) {
this->size = size;
this->A = new float[size];
for (int i = 0; i < size; i++) {
this->A[i] = A[i];
}
}
// Конструктор копирования
ArrayFloatPlus(const ArrayFloatPlus& other) {
this->size = other.size;
this->A = new float[size];
for (int i = 0; i < size; i++) {
this->A[i] = other.A[i];
}
}
// Методы доступа
int GetSize() { return size; }
void SetSize(int size) {
this->size = size;
delete[] this->A;
this->A = new float[size];
}
float GetAi(int i) {
if (i < 0 || i >= size) {
std::cout << "Ошибка: недопустимый индекс" << std::endl;
return 0;
}
return A[i];
}
void SetAi(int i, float value) {
if (i < 0 || i >= size) {
std::cout << "Ошибка: недопустимый индекс" << std::endl;
return;
}
A[i] = value;
}
// Оператор присваивания
ArrayFloatPlus operator=(const ArrayFloatPlus& other) {
if (this != &other) {
this->size = other.size;
delete[] this->A;
this->A = new float[size];
for (int i = 0; i < size; i++) {
this->A[i] = other.A[i];
}
}
return *this;
}
// Оператор сложения
ArrayFloatPlus operator+(const ArrayFloatPlus& other) {
if (this->size != other.size) {
std::cout << "Ошибка: разные размеры массивов" << std::endl;
return *this;
}
ArrayFloatPlus result(this->size);
for (int i = 0; i < this->size; i++) {
result.A[i] = this->A[i] + other.A[i];
}
return result;
}
// Деструктор
~ArrayFloatPlus() { delete[] A; }
};