2014-09-20 2 views
0

의 우리가 다항식의 각 항목의 정도가 4.2x^5+x^2-1.4{-1.4, 0, 1, 0, 0, 4.2}로 표현된다 (예. 배열의 인덱스에 해당하는 수레의 배열로 다항식을 대표한다고 가정 해 봅시다.임의의 길이의 다항식을 곱하는 알고리즘?

내 할당 질문을 작성하는 것입니다 두 개의 임의 길이의 다항식을 곱하고 결과를 출력합니다 (반환하지 않고).

일반적으로 제가 질문을 할 때 지금까지 시도한 것을 포함하지만 실제로는 완전히 단서가 없습니다 이것은 내가 가진 전부입니다.

void multpoly(float *a, int len_a, float *b, int len_b) 
{ 
    for(i = 0; i < len_result; i++) 
    { 
     printf(" %.5f, ", product[i]); 
    } 
} 

도움이 될 것입니다.

+1

계산 손에 의해 다음 그 결과를 게시 : ('(도끼^2 + BX + C) *를 DX를^5 + ex^2 + f)'. – user3386109

+0

@ user3386109 무엇? 질문과 어떻게 연결되어 있습니까? – python

+0

@python 어 음, 어디 보자. 제목에 "임의의 길이의 다항식 곱셈"이 나와있다. 그게 무슨 뜻이라고 생각하니? – user3386109

답변

3

나는이 당신이 원하는 것을 믿는다

// constraints: 'result' must have space for at least len1 + len2 - 1 elements. 
void multpoly(const float *poly1, int len1, const float *poly2, int len2, float *result) 
{ 
    int i, p1i, p2i; 
    int len_result = len1 + len2 - 1; 

    for (i = 0; i < len_result; i++) result[i] = 0.0; 

    for (p1i = 0; p1i < len1; ++p1i) 
     for (p2i = 0; p2i < len2; ++p2i) 
      result[p1i + p2i] += poly1[p1i] * poly2[p2i]; 
} 

Ideone example of this function

+0

예, 작동하지만 누군가가 당신보다 빠릅니다;) – chouaib

+2

Stackoverflow는 경쟁이 아닙니다. – Wug

+0

당신은 맞습니다.하지만 동일한 대답을 추가하는 것은 무엇입니까! 나는 그것이 이미 거기에있는 것을 의미한다!! 어쨌든, 당신의 답을 편집하십시오. 사촌 코드가 '결과를 출력하지 않고 반환하는 대신에 어디에서 볼 수 있는지 알 수 없습니다.' – chouaib

1
#include <stdio.h> 
#include <string.h> 

main() 
{ 
    float a[5]={1, 2, 3}; 
    float b[5]={2, 0, 1}; 

    printPol(a, b, 3, 3); 

} 

void printPol(float*a, float*b, int len1, int len2) 
{ 
    int i, j; 

    // order of resulting poly is o1+o2 
    // o1 = len1 -1 
    // o2 = len2 -1 
    // length is order + 1 (+1 is the constant number) 
    int len = (len1-1)+(len2-1)+1; 

    float res[len]; 
    //initialize 
    for(i=0;i<len; i++) res[i] = 0; 


    for(i=0; i<len1; i++)  
     for(j=0; j<len2; j++) 
     { 
      // mutually multiply all elements 

      res[i+j] += a[i]*b[j]; 
     } 
    printf("%f ", res[0]); 
    for(i=1;i<len; i++) printf("+%f*x^%d ", res[i], i); 


} 
+0

"결과 폴리의 차수는 o1 * o2"입니다. 분명히 아닙니다. –

+0

thnx @ T.C. 그에 따라 편집되었습니다. – chouaib

관련 문제