2014-09-11 3 views
0

C++의 기본 생성자 메서드를 이해하는 데 어려움이 있고 메서드의 필요에 맞게 작성하는 방법이 있습니다. 나는 (n) x^(n) + a (n-1) x^(n-1) + ... + a (0)와 같은 다항식을 표현할 수있는 간단한 배열을 생성하는 임무를 가졌다. 계수의 배열이어야하고 계수 a (i)는 배열의 위치 i에 저장되어야합니다. 계수는 부동 소수점 값 (잠재적으로 음수)이므로 배열의 유형은 double이어야합니다. 또한 최대 MAXPOLY - 1 (또는 49)의 다항식을 유지하기 위해 배열을 제한하여 최대 MAXPOLY (50으로 설정된 상수 변수) 여야합니다. 전체 할당 지침/설명
는 여기에서 찾을 수 있습니다 :
Beginner polynomial program in C++

내 문제는 다항식 개체, 폴리에 대한 기본 생성자를 생성에있다. 기본 클래스 생성자는 다항식을 상수 0으로 초기화하여 0 차 다항식 인 클래스 객체를 만듭니다. 그러나이 생성자의 사후 조건은 coeff의 모든 배열 요소 []는 0.0으로 설정되어 있으며, 이는 혼란이 계속되는 곳입니다. 먼저 0 - MAXPOLY에 대해 전체 배열을 초기화하고 0에서 poly를 정의해야합니까? 아니면 하나 또는 다른 충분해야합니까? 생성자를 작성하려면 어떻게해야합니까?기본 클래스 생성자에 문제가 발생했습니다. C++

이 질문이 오히려 분명한 것처럼 보일 수도 있지만 사과를 전합니다.이 주제에 관해 읽은 교과서 자료가 불분명합니다. 또한, 내가 생각하기에 너무 과장되어 혼란 스러울 수도 있습니다. 어떤 도움이라도 대단히 감사하겠습니다! 고맙습니다!

+1

다항식이 0 도인 경우 다항식에 항이 없으므로 계수 배열에 어떤 값이 있는지 상관하지 않으므로 입력이 무엇이든 관계없이 0을 생성합니다. 배열을 0으로 초기화하는 것은 여전히 ​​좋은 생각이지만 좋은 실행이라고 간주됩니다. – wakjah

+0

@wakjah "차수 0"다항식에 1 개의 계수가 있습니다. "degree"는 현재'x'의 가장 큰 힘입니다; 'f (x) = 6'은 차수 0 다항식의 예이다. –

답변

0

나는 당신이 그 문제를 과소 평가하고 있다고 생각합니다. coeff [0] = 10 인 다항식이 "x = 10"일 때, coeff [0] = 0 인 것은 "x = 0"이고, 배열의 나머지는 0으로 초기화된다고 가정합니다.

C++의 초보자로서 배열 인덱스는 0에서 N-1까지이며 여기서 N은 배열의 크기입니다.

0

계수에 배열을 저장해야합니다.

  • 는 고정 된 크기의 배열도 배열의 요소 수의 카운터를 사용
  • 사용 가변 크기 배열

은 "사용"위치 : 일반적으로 두 가지 옵션이 있습니다 두 번째 옵션은 간단하고 더 의미가 있습니다, 그래서 당신의 클래스는 회원에게

std::vector<double> coefficients; 

있을 것 생성자 이니셜 라이저 목록에 당신은 것입니다 :

coefficients(1, 0.0) 

1 구성원 값이 0.0 인 것으로 초기화하는 것을 의미합니다. 그런 다음 coefficients.size() - 1을 수행하여 다항식의 차수를 찾을 수 있습니다.

0

링크 된 질문을 보면 어떤 표현을 사용할 지에 대한 선택권이없는 것 같습니다.이 가정 :

class Poly 
{... 
    // array for holding the coefficients of the poly 
    double coeff[MAXPOLY];    
... 
} 

그런 다음 생성자는 0 값으로 배열을 채우기 위해 필요, 다음과 같이 :

// Class constructor 
Poly::Poly() 
{ 
    //ADD YOUR CODE HERE 
    for(int i = 0; i < MAXPOLY; i++) 
     coeff[i]=0.0; 
} 

이 무슨 일이 일어나고 있는지의 가장 명시 적 데모, 당신은 코드를 단축 할 수 있지만 배열을 다음과 같이 초기화하십시오 :

memset (coeff, 0, sizeof (coeff)); // 이것은 배열의 메모리 공간의 모든 바이트를 0으로 채 웁니다.

은 기능적으로 동일한 것을 만들어냅니다.

관련 문제