프로그래밍

다항식의 덧셈 프로그램

Dilrong 2013. 10. 15. 14:47

#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