#include<stdio.h>
#define MAX(a,b) ((a>b)? a:b)
#define MAX_DEGREE 50
//다항식의 덧셈 프로그램
typedef struct{ //구조체 polynomial 정의
int degree; //다항식의 차수를 저장할 변수
float coef[MAX_DEGREE]; //다항식의 각 항의 계수를 저장할 1차원 배열
} polynomial;
polynomial addPoly(polynomial A, polynomial B)
{
polynomial C;
int A_index=0, B_index=0, C_index=0;
int A_degree=A.degree, B_degree=B.degree;
C.degree=MAX(A.degree, B.degree);
while(A_index<=A.degree && B_index<=B.degree)
{
if(A_degree > B_degree)
{
C.coef[C_index++] = A.coef[A_index++];
A_degree--;
}
else if(A_degree == B_degree)
{
C.coef[C_index++]=A.coef[A_index++]+B.coef[B_index++];
A_degree--;
B_degree--;
}
else
{
C.coef[C_index++] = B.coef[B_index++];
B_degree--;
}
}
return C; //다항식 덧셈의 결과 다항식 C를 반환
}
void printPoly(polynomial P)
{
int i, degree;
degree=P.degree;
for(i=0; i<=P.degree; i++)
printf("%3.0fx^%d", P.coef[i], degree--);
printf("\n");
}
void main()
{
polynomial A={3, {4,3,5,0}}; //다항식 A의 초기화
polynomial B={4, {3,1,0,2,1}}; //다항식 B의 초기화
polynomial C;
C=addPoly(A,B); //다항식 A, B에 대한 덧셈을 수행하기 위해 addPoly 함수 호출
printf("\n A(x)=");
printPoly(A); //다항식 A 출력
printf("\n B(x)=");
printPoly(B); //다항식 B 출력
printf("\n C(x)=");
printPoly(C); //다항식 C 출력
getchar();
}
'프로그래밍' 카테고리의 다른 글
JAVA 파일 읽고쓰기 (0) | 2013.10.21 |
---|---|
Java 데이터 타입 (0) | 2013.10.21 |
배열의 논리적,물리적 순서를 확인하는 프로그램 (0) | 2013.10.15 |
문자열 비교 확인 (0) | 2013.10.08 |
피보나치 수열 (0) | 2013.10.08 |