새로새록

[c++]7. 두 좌표 사이의 거리 본문

소프트웨어융합/경희대 c++ 과제

[c++]7. 두 좌표 사이의 거리

류지나 2020. 7. 16. 19:33

좌표값 두 개를 입력받고 두 좌표 사이의 거리를 출력하세요.


1) 좌표값은 초기화시에 값을 따로 주지 않으면 x = 0, y = 0으로 초기화합니다.
2) “좌표 – 좌표” 연산자를 Operator overloading을 활용하여 선언하세요.
·(x1, y1) - (x2, y2) = (x1 – x2, y1 – y2)를 클래스 내에서 구현합니다.
3) “좌표* 좌표” 연산자를 Operator overloading을 활용하여 선언하세요.
·(x1, y1)* (x2, y2) = (x1 * x2, y1 * y2)를 클래스 내에서 구현합니다.
4) 2번과 3번을 활용하여 두 좌표 사이의 거리를 구하세요.
5) 제곱근 사용을 위해 #include <cmath>를 선언해야합니다.


int main() {
	int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
	Point* pP1, * pP2, * pP3;
	cout << "첫번째 좌표[x1, y1]를 입력하세요 : ";
	cin >> x1 >> y1;
	cout << "두번째 좌표[x1, y1]를 입력하세요 : ";
	cin >> x2 >> y2;
	pP1 = new Point(x1, y1);
	pP2 = new Point(x2, y2);
	pP3 = new Point(); //x,y가 0으로 초기화
	/* 아래의 방식으로도 x, y값 설정이 가능해야합니다. */
	//pP1->setPoint(x1, y1);
	//pP1->setPoint(x2, y2);
	/***********************************************/
	*pP3 = (*pP1 - *pP2) * (*pP1 - *pP2);
	/* pP3을 활용하여 거리값을 구하세요 */
	cout << "두 좌표 사이의 길이는 " << /* 결과 값 */ << "입니다" << endl;;
	return 0;
}

#include <iostream>
#include <cmath>
using namespace std;

class Point {
	int x, y;
public:
	Point():x(0),y(0){}
	Point(int _x, int _y) :x(_x), y(_y) {}
	Point operator-(const Point& pt) {
		Point res(this->x - pt.x, this->y - pt.y);
		return res;
	}
	Point operator*(const Point& pt2) {
		Point result(this->x * pt2.x, this->y * pt2.y);
		return result;
	}
	void setPoint(int _x, int _y) {
		x = _x;
		y = _y;
	}
	Point operator=(const Point& pt) {
		this->x = pt.x;
		this->y = pt.y;
		return (*this);
	}
	int getX() const { return x; }
	int getY() const { return y; }
};
int main() {
	int x1 = 0, y1 = 0, x2 = 0, y2 = 0; 
	Point *pP1, *pP2, *pP3;

	cout << "첫번째 좌표[x1, y1]를 입력하세요 : "; 
	cin >> x1 >> y1;

	cout << "두번째 좌표[x1, y1]를 입력하세요 : "; 
	cin >> x2 >> y2;

	pP1 = new Point(x1, y1); 
	pP2 = new Point(x2, y2);

	pP3 = new Point();

	*pP3 = (*pP1 - *pP2) * (*pP1 - *pP2);

	
	cout << "두 좌표 사이의 길이는 " << sqrt((*pP3).getX()+ (*pP3).getY()) << "입니다" << endl;;
	return 0;
}