2016년 7월 16일 토요일

c언어 자료구조론 - 다항식의 덧셈

2009.04.26.

#include <stdio.h>
typedef struct{
 int deg;
 int po[10];
}poly;
poly p_add(poly a,poly b){
 poly c;
 int ap=0,bp=0,cp=0;
 int ai=a.deg,bi=b.deg;
 while(ap<=a.deg && bp<=b.deg){
  if(ai>bi){
   c.deg=a.deg;
   c.po[cp++]=a.po[ap++];
   ai--;}
 
  else if(ai<bi){
   c.deg=b.deg;
   c.po[cp++]=b.po[bp++];
   bi--;}
  else{
   c.deg=a.deg;
   c.po[cp++]=a.po[ap++]+b.po[bp++];}
 }
 return c;
}
void main(){
 poly a={3,{1,2,3,4}};
 poly b={2,{  1,2,3}};
 
 poly ans=p_add(a,b);
 int i=ans.deg;
 int p=0;
 for(;i>1;i--){
  printf("%dX^%d  +  ",ans.po[p],i);
  p++;}
 printf("%dX  +  %d\n",ans.po[p],ans.po[p+1]);

}

댓글 없음:

댓글 쓰기