Вопрос задан 05.07.2023 в 11:55. Предмет Информатика. Спрашивает Назаренко Даниил.

Дан абстрактный класс Point, описывающий точку в пространстве class Point { protected: double

*arr; //массив с координатами по осям size_t size; //размерность пространства public: virtual void print() = 0; //вывод координат }; Задание: 1. Добавить в класс Point конструктор(ы) 2. Унаследовать от класса Point два класса - Point2D и Point3D, в которых переопределить метод print. Для хранения координат использовать массив arr 3. Добавить в классы Point, Point2D и Point3D деструкторы Point2D - описывает точку в двумерном пространстве (на вход конструктору подаются координаты по осям x и y) Point3D - описывает точку в трёхмерном пространстве (на вход конструктору подаются координаты по осям x, y и z) Пример использования классов: int main (int argc, char *argv[]) { Point *p1 = new Point2D(1.5, 4.8); Point *p2 = new Point3D(1.0, 10.2, 3.3); p1->print(); p2->print(); delete p1; delete p2; return 0; } Вывод: x = 1.5 y = 4.8 x = 1.0 y = 10.2 z = 3.3
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Косенчук Лиза.

Ответ:

#include <iostream>

#include <iomanip>

class Point {

protected:

double* arr; //массив с координатами по осям

size_t size; //размерность пространства

public:

   Point(size_t s) : size(s) {

       arr = new double[s];

   }

   ~Point() {  

       delete[] arr;  

   }

virtual void print() = 0; //вывод координат

};

class Point2D : public Point {

public:

   Point2D(double x,double y) : Point(2) {

       arr[0] = x; arr[1] = y;

   }

   void print() override {

       std::cout << "x = " << std::fixed << std::setprecision(1) << arr[0] << " y = " << arr[1] << std::endl;

   }

};

class Point3D : public Point {

public:

   Point3D(double x, double y, double z) : Point(3) {

       arr[0] = x; arr[1] = y; arr[2] = z;

   }

   void print() override {

       std::cout << "x = " << std::fixed << std::setprecision(1) << arr[0] << " y = " << arr[1]

           << " z = " << arr[2] << std::endl;

   }

};

int main(int argc, char* argv[]) {

Point* p1 = new Point2D(1.5, 4.8);

Point* p2 = new Point3D(1.0, 10.2, 3.3);

p1->print();

p2->print();

delete p1;

delete p2;

return 0;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, вот полный код, который реализует вашу задачу:

cpp
#include <iostream> class Point { protected: double *arr; size_t size; public: Point(size_t dimensions) : size(dimensions) { arr = new double[size]; } virtual void print() = 0; virtual ~Point() { delete[] arr; } }; class Point2D : public Point { public: Point2D(double x, double y) : Point(2) { arr[0] = x; arr[1] = y; } void print() override { std::cout << "x = " << arr[0] << " y = " << arr[1] << std::endl; } }; class Point3D : public Point { public: Point3D(double x, double y, double z) : Point(3) { arr[0] = x; arr[1] = y; arr[2] = z; } void print() override { std::cout << "x = " << arr[0] << " y = " << arr[1] << " z = " << arr[2] << std::endl; } }; int main(int argc, char *argv[]) { Point *p1 = new Point2D(1.5, 4.8); Point *p2 = new Point3D(1.0, 10.2, 3.3); p1->print(); p2->print(); delete p1; delete p2; return 0; }

Этот код создает абстрактный класс Point с конструктором и деструктором, и два производных класса Point2D и Point3D, которые также имеют свои конструкторы и переопределенный метод print. В функции main создаются объекты Point2D и Point3D, и вызывается их метод print, а затем объекты удаляются при помощи оператора delete.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос