사용된 함수는 총 다섯 개로 void Polynomial::summ,
void polynomial::mul,int Polynomial::GetHigh, void polynomial::PrintAll, void newPol이 있다.
Polynomial::summ(polynomial *a, const Polynomial& b)- O(n) -
두 다항식을 더하는 함수. 클래스 b는 const로 설정하여 변경할 수 없도록 하였다.
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) - 클래스에서 가장 큰 차수를 찾는다. mul과 summ에서 쓰였다.
연산자 overloading과 문제의 이해가 중요한 문제였다. 뿐 만 아니라 입력에 있어서 복잡한 다항식의 모양을 다 class에 넣어줄 수 있는 강력한 함수가 필요했기에 분기별, 상황별로 스위치 개념을 사용하여 구현했다. 물론, 그에 따른 디버깅 소요 시간의 증가는 당연했지만 적은 시간 복잡도로 큰 효과를 이끌어냈다는 점에서 가치 있었던 일 인 것 같다.
'vidigummy KAU > 2018년도 1학기 자료구조와 C++' 카테고리의 다른 글
과제 5(Chain List 구현 && chainiterator 구현) (0) | 2018.05.28 |
---|---|
4번 과제((Reverse polish (expression || notation)) && stack (0) | 2018.05.28 |
2번 과제 (0) | 2018.05.28 |
2018.03.14의 자료구조 첫 과제 (0) | 2018.03.17 |