배열을 이용한 다항식
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

1. 문제개요

2. 알고리즘

3. 소스 및 주석

4. 실행결과

5. 느낀점

본문내용

ultiPoly(Polynomial_Array mltemp) {
// 다항식의 곱셈함수
// 한 다항식에서 단항을 뽑아내어 단항식과 다항식을 곱하면서 차례로 더해준다
int i;
int temp1=finish-start+1;
int temp2=mltemp.finish-mltemp.start+1;
Polynomial_Array *all_result;
Polynomial_Array fin_result;
if(temp1<=0 || temp2<=0) {
// 어떤 하나의 다항식이라도 항이 없을경우
cout << "항이 없는 다항식입니다. " << endl;
}
else {
// temp1과 temp2중 작은 것을 루프 회수로 쓰기 위함
if(temp1<=temp2) {
all_result = new Polynomial_Array[temp1];
for(i=0;i // 배열에 단항X다항의 결과를 저장
all_result[i]=this->sMultiPoly(mltemp,start+i);
}
for(i=0;i // 저장된 배열의 식을 모두 덧셈하면 다항X다항의 결과생성
fin_result=fin_result.addPoly(all_result[i]);
}
}
else {
all_result = new Polynomial_Array[temp2];
for(i=0;i // 배열에 단항X다항의 결과를 저장
all_result[i]=mltemp.sMultiPoly(*this,mltemp.start+i);
}
for(i=0;i // 저장된 배열의 식을 모두 덧셈하면 다항X다항의 결과생성
fin_result=fin_result.addPoly(all_result[i]);
}
}
delete[] all_result;
}
return fin_result;
} // multiPoly의 끝
void Polynomial_Array::evalPoly(double x) {
// x에 값을 주었을 때 나오는 다항식의 계산값을 구함
double temp=0;
for(int i=start;i<=finish;i++) {
// 안의 pow(밑수,지수)함수를 써서 계산
temp+=termArray[i].coef * (double) pow(x,termArray[i].exp);
}
cout << "X = " << x << " , Y = " << temp << endl;
} // evalPoly의 끝

#include "Polynomial_Array.h"
int main() {
Polynomial_Array *Test1=new Polynomial_Array();
Polynomial_Array *Test2=new Polynomial_Array();
Polynomial_Array *Test3=new Polynomial_Array();
Polynomial_Array *Result=new Polynomial_Array();
Test1->inputPoly();
Test2->inputPoly();
Test3->inputPoly();
cout << "덧셈 :";
*Result=Test1->addPoly(*Test2);
Result->viewPoly();
cout << "곱셈 :";
*Result=Result->multiPoly(*Test3);
Result->viewPoly();
Result->evalPoly(1);
Result->evalPoly(2);
Result->evalPoly(3);
delete Test1;
delete Test2;
delete Test3;
delete Result;
cout << "다항식의 연산이 끝났습니다. 프로그램을 종료합니다." << endl;
return 0;
}
4. 실행결과 화면출력
Set 1 :
A(x) = x + 1
B(x) = x^4 +2
C(x) = -5x^2 + 3x
R_1 (x) = A(x) + B(x) = x^4 + x + 3
R_2 (x) = R_1 (x) times C(x) = -5x^6 + 3x^5 -5x^3 -12x^2 + 9x
R_2 (1) = -10
R_2 (2) = -294
R_2 (3) = -3132
Set 2 :
A(x) = 4x^1000 -x
B(x) = 3x^2 + 2x -1
C(x) = x^10 +x^5 -2
R_1 (x) = A(x) + B(x) = 4x^1000 + 3x^2 + x -1
R_2 (x) = R_1 (x) times C(x) = 4x^1010 + 4x^1005 -8x^1000 + 3x^12 + x^11
- x^10 + 3x^7 + x^6 - x^5 -6x^2 -2x+2
R_2 (1) = 0
R_2 (2) = 4.51748e+304
Set 3 :
A(x) = x^3 -5x
B(x) = 4x^2 - 2x +3
C(x) = 2x +7
R_1 (x) = A(x) + B(x) = x^3 + 4x^2 -7x +3
R_2 (x) = R_1 (x) times C(x) = 2x^4 + 15x^3 +14x^2 -43x + 21
R_2 (1) = 9
R_2 (2) = 143
R_2 (3) = 585
5. 느낀점
다항식을 배열로 표현하는 세가지 방법 중에 3번째 방법으로 구현하기로 결정하였습니다. 왜냐하면 문제에서 제시한 일반적인 다항식과 특수한 다항식을 다 받아들일 수 있는 표현 중에는 효율적인 방법이라고 생각했기 때문입니다. 과제를 풀이하면서 입력받는 부분에 대해서 많은 생각이 있었습니다. 계수와 지수를 각각 입력을 받는 방법과 항의 개수를 입력받고 내림차순으로 계수를 입력받는 방법, 마지막으로는 문자열로 받아서 하나씩 읽어내는 방법을 해봤었는데 마지막 방법이 문제를 풀이할 가장 자연스러운 방법 같아서 문자열로 입력받는 것을 선택하였습니다. 문자열에서 원소하나하나를 추출하는 것도 어려웠지만 이리저리 생각해보고 찾아내서 모듈을 결국 구성하게 되었습니다.
과제를 수행하기 위해 몇 일간을 작업했지만 완성된 결과를 보니 좋았습니다. 고생 끝에 낙이 온다는 말을 믿고 느끼고 앞으로 나오는 과제를 충실히 수행해 나가기 위해 열심히 공부할 것입니다.

키워드

다항식,   배열,   polynomial,   array
  • 가격2,000
  • 페이지수12페이지
  • 등록일2005.11.12
  • 저작시기2005.11
  • 파일형식한글(hwp)
  • 자료번호#320151
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니