Rectangle.h
class Rectangle
{
double length;
double width;
double centerX;
double centerY;
public:
Rectangle(double rectangle_length, double rectangle_width, double rectangle_centerX, double rectangle_centerY)
{
length = rectangle_length;
width = rectangle_width;
centerX = rectangle_centerX;
centerY = rectangle_centerY;
}
void Vertex();
double Perimetr();
void print_inf();
bool check_point(double X_point, double Y_point);
bool check_abscissa_axis();
bool check_ordinate_axis();
};
Rectangle.cpp
#include <iostream>
#include "Rectangle.h"
double Rectangle :: Perimetr()
{
return length * width;
}
void Rectangle :: Vertex()
{
std :: cout << "Координата вершины A: X:" << centerX - length/2 << " Y:" << centerY - width/2 << std :: endl;
std :: cout << "Координата вершины B: X:" << centerX + length/2 << " Y:" << centerY - width/2 << std :: endl;
std :: cout << "Координата вершины C: X:" << centerX + length/2 << " Y:" << centerY + width/2 << std :: endl;
std :: cout << "Координата вершины D: X:" << centerX - length/2 << " Y:" << centerY + width/2 << std :: endl;
}
void Rectangle :: print_inf()
{
std :: cout << "Длина стороны прямоугольника: " << length << std :: endl;
std :: cout << "Ширина стороны прямоугольника: " << width << std :: endl;
std :: cout << "Периметр прямоугольника: " << Perimetr() << std :: endl;
Vertex();
std :: cout << "Координаты центра прямоугольника:\tX:" << centerX << "\tY: "<< centerY << std :: endl << std :: endl;
}
bool Rectangle :: check_point(double X_point, double Y_point)
{
if ((((X_point >= centerX + length/2 - 0.005) && (X_point <= 0.005 + centerX + length/2)) && (Y_point <= (centerY + width/2)) && (Y_point >= (centerY - width/2))) ||
(((X_point >= centerX - length/2 - 0.005) && (X_point <= 0.005 + centerX - length/2)) && (Y_point <= (centerY + width/2)) && (Y_point >= (centerY - width/2))) ||
(((Y_point >= centerY + width/2 - 0.005) && (Y_point <= 0.005 + centerY + width/2)) && (X_point <= (centerX + length/2)) && (X_point >= (centerX - length/2))) ||
(((Y_point >= centerY - width/2 - 0.005) && (Y_point <= 0.005 + centerY - width/2)) && (X_point <= (centerX + length/2)) && (X_point >= (centerX - length/2))))
{
return 1;
}
else { return 0; }
}
bool Rectangle :: check_abscissa_axis()
{
if (((centerY + width/2) > 0) && ((centerY - width/2) > 0) || ((centerY + width/2) < 0) && ((centerY - width/2) < 0))
{
return 0;
}
else { return 1; }
}
bool Rectangle :: check_ordinate_axis()
{
if (((centerX + length/2) > 0) && ((centerX - length/2) > 0) || ((centerX + length/2) < 0) && ((centerX - length/2) < 0))
{
return 0;
}
else { return 1; }
}
main.cpp
#include <iostream>
#include "Rectangle.h"
int main()
{
double length, width, centerX, centerY, point_x, point_y;
std :: cout << "Введите длину прямоугольника: "; std :: cin >> length;
std :: cout << "Введите ширину прямоугольника: "; std :: cin >> width; std :: cout << std :: endl;
std :: cout << "Введите координату X центра прямоугольника: "; std :: cin >> centerX;
std :: cout << "Введите координату Y центра прямоугольника: "; std :: cin >> centerY; std :: cout << std :: endl << std :: endl;
Rectangle rectangle1(length, width, centerX, centerY);
rectangle1.print_inf();
std :: cout << "Для проверки точки на принадлежность границе фигуры:" << std :: endl;
std :: cout << "Введите координату X точки: "; std :: cin >> point_x;
std :: cout << "Введите координату Y точки: "; std :: cin >> point_y; std :: cout << std :: endl << std :: endl;
if (rectangle1.check_point(point_x,point_y))
{
std :: cout << "Указанная точка принадлежит границе фигуры" << std :: endl << std :: endl;
}
else {std :: cout << "Указанная точка не принадлежит границе фигуры" << std :: endl << std :: endl;}
if (rectangle1.check_abscissa_axis())
{
std :: cout << "Фигура пересекает ось абцисс" << std :: endl << std :: endl;
}
else {std :: cout << "Фигура не пересекает ось абцисс" << std :: endl << std :: endl;}
if (rectangle1.check_ordinate_axis())
{
std :: cout << "Фигура пересекает ось ординат" << std :: endl << std :: endl;
}
else {std :: cout << "Фигура не пересекает ось ординат" << std :: endl << std :: endl;}
return 0;
}
При запуске кода на все методы выдает ошибку undefined reference to
к примеру: undefined reference to `Rectangle::check_ordinate_axis()'