vidigummy KAU/2018년도 1학기 자료구조와 C++

자료구조 3번 과제(연산자 overloading && Polynomial)

vidi 2018. 5. 28. 13:39

사용된 함수는 총 다섯 개로 void Polynomial::summ,

void polynomial::mul,int Polynomial::GetHigh, void polynomial::PrintAll, void newPol이 있다.

Polynomial::summ(polynomial *a, const Polynomial& b)- O(n) -

두 다항식을 더하는 함수. 클래스 bconst로 설정하여 변경할 수 없도록 하였다.

Polynomial::mul(Polynomial *a, Polynomial *b, Polynomial *temp) - O(n^2) - 두 다항식을 곱하는 함수, 클래스 temp는 결과값이 들어갈 빈 class로 설정한다.

Polynomial::PrintAll(int x) - O(n) - 해당 클래스에 있는 다항식과 parameter로 받은 x의 값을 대입한 결과를 출력하는 함수이다. operator overloading << 에서 쓰였다.

newPol(Polynomial& a, char*b) - O(n) - *b에 있는 요소들을 분석하여 class a의 인자로 만드는 함수이다. cin overloading >>에서 쓰였다.

Polynomial::GetHigh() - O(1) - 클래스에서 가장 큰 차수를 찾는다. mulsumm에서 쓰였다.



연산자 overloading과 문제의 이해가 중요한 문제였다. 뿐 만 아니라 입력에 있어서 복잡한 다항식의 모양을 다 class에 넣어줄 수 있는 강력한 함수가 필요했기에 분기별, 상황별로 스위치 개념을 사용하여 구현했다. 물론, 그에 따른 디버깅 소요 시간의 증가는 당연했지만 적은 시간 복잡도로 큰 효과를 이끌어냈다는 점에서 가치 있었던 일 인 것 같다.


HW3.cpp