2차 방정식 인수분해를 프로그래밍 해보자. (a는 0이 아니다) 해는 다음과 같이 구할수 있다. 판별식 D 값으로 해가 몇개 있는지 알수 있다. D = b2 − 4ac D > 0이면, 두 개의 서로 다른 실근을 가진다. D = 0이면, 하나의 실근을 가진다. D < 0이면, 두개의 서로 다른 허근을 가진다. C++ 코드는 다음과 같다. void factorization2(double a, double b, double c, std::vector<double>& outList)
{ double d = b * b - 4.0 * a * c; if(d < 0) return; else if(d == 0) { double r = -b / ( 2.0 * a ); outList.push_back(r); } else { double r1 = ( -b + sqrt(d) ) / ( 2.0 * a ); double r2 = ( -b - sqrt(d) ) / ( 2.0 * a ); outList.push_back(r1); outList.push_back(r2); } } std::vector<double> resultList; factorization2(1, 2, 1, resultList); //x^2 + 2x + 1 = 0, result -1 std::vector<double> resultList2; factorization2(1, 3, 2, resultList2); //x^2 + 3x + 2 = 0, result -1, -2 x^2 + 2x + 1 = 0 방정식의 결과는 -1이다. x^2 + 3x + 2 = 0 방정식의 결과는 -1, -2 두개이다. 참조) https://ko.wikipedia.org/wiki/이차_방정식 |