Предмет: Информатика, автор: javor4170

Реалізувати мовою С++ клас ArrayFloatPlus, що реалізує динамічний масив чисел типу float. У класі реалізовано: внутрішні змінні size, A, що описують розмір масиву та сам масив;
два конструктори, що ініціалізують початковими значеннями елементи масиву;
конструктор копіювання;
методи доступу GetSize(), SetSize(), GetAi(), SetAi(), які реалізують доступ до внутрішніх змінних масиву з відповідними операціями (виділення пам'яті, перевірка на допустимі межі);
операторна функція operator=(), що реалізує копіювання об'єктів;
операторна функція operator+(), яка реалізує навантаження оператора '+' для масивів типу ArrayFloatPlus. Операторна функція додає поелементно значення масивів, які є операндами операції +. деструктор.

Ответы

Автор ответа: honvert
2

#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; }

};

Похожие вопросы
Предмет: Английский язык, автор: Аноним
Предмет: Математика, автор: anegichsaaa