#include <stdio.h>
void showPoly(int p[], int deg) {
int i;
i=deg;
if(i>0) {
printf("%dx^%d", p[i], i);
}
i=i-1;
while(i>-1) {
if(i>0) {
if(p[i]>0) printf(" + %dx^%d", p[i], i);
else if(p[i]<0) printf(" - %dx^%d", -p[i], i);
}
else if(p[0]>0) printf(" + %d", p[i]);
else if(p[0]<0) printf(" - %d",-p[i]);
i=i-1;
}
printf("\n");
}
void addPoly(int p1[], int p1deg, int p2[], int p2deg, int p3[], int *p3deg) {
int i, n;
n=p1deg;
if(p2deg>n) n=p2deg;
*p3deg=n;
for(i=0;i<n+1;++i) p3[i]=p1[i]+p2[i];
}
void multPoly(int p1[], int p1deg, int p2[], int p2deg, int p3[], int *p3deg) {
int i, j;
*p3deg=p1deg+p2deg;
for(i=0;i<*p3deg+1;++i) p3[i]=0;
for(i=0;i<p1deg+1;++i) {
for(j=0;j<p2deg+1;++j) {
p3[i+j]=p3[i+j]+p1[i]*p2[j];
}
}
}
void diffPoly(int p1[], int p1deg, int p2[], int *p2deg) {
int i, n;
n=p1deg;
*p2deg=p1deg-1;
for(i=0;i<n;++i) p2[i]=(i+1)*p1[i+1];
}
void integPoly(int p1[], int p1deg, int p2[], int *p2deg) {
int i, n;
n=p1deg;
*p2deg=p1deg+1;
for(i=0;i<n+1;++i) p2[i+1]=(1/(i+2))*p1[i];
p2[0]=0;
}
int main() {
int i, j, n, coef, deg;
int poly1deg=0, poly2deg=0, poly3deg=0;
int poly1[100]={0,};
int poly2[100]={0,};
int poly3[100]={0,};
printf("다항식1: ");
// 다항식의 끝은 -1 -1 로 표현해 준다.
while(1) {
scanf("%d%d",&coef, &de g); // de g 는 deg 대신 쓴 것입니다.
if(deg<0) break;
poly1[deg]=coef;
if(deg>poly1deg) poly1deg=deg;
}
printf("다항식2: ");
// 다항식의 끝은 -1 -1 로 표현해 준다.
while(1) {
scanf("%d%d",&coef, &de g); // de g 는 deg 대신 쓴 것입니다.
if(deg<0) break;
poly2[deg]=coef;
if(deg>poly2deg) poly2deg=deg;
}
printf("입력된 다항식1: ");
showPoly(poly1, poly1deg);
printf("입력된 다항식2: ");
showPoly(poly2, poly2deg);
addPoly(poly1, poly1deg, poly2, poly2deg, poly3, &poly3deg);
printf("다항식1 + 다항식2: ");
showPoly(poly3, poly3deg);
multPoly(poly1, poly1deg, poly2, poly2deg, poly3, &poly3deg);
printf("다항식1 * 다항식2: ");
showPoly(poly3, poly3deg);
diffPoly(poly1, poly1deg, poly3, &poly3deg);
printf("다항식1의 미분: ");
showPoly(poly3, poly3deg);
// 다항식의 적분에는 분수가 나오기 때문에 정수로는 문제가 된다.
//integPoly(poly1, poly1deg, poly3, &poly3deg);
//printf("다항식1의 적분: ");
//showPoly(poly3, poly3deg);
return 0;
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
조합하여 숫자구하기 코드 질문이요! (0) | 2012.05.08 |
---|---|
비순환호출로 고친 머지소트 (0) | 2012.05.07 |
2진 다항식의 곱셈 (0) | 2012.04.30 |
순환 카운트함수를 비순환 카운트함수로 (0) | 2012.04.27 |
차집합을 구하는 프로그램 (0) | 2012.04.23 |