#include #include #define MAX 100 typedef struct Arr{ int xnum; float val; } Arr; int main() { Arr arr1[MAX] = {0}; Arr arr2[MAX] = {0}; Arr add_arr[MAX] = {0}; Arr multi_arr[MAX] = {0}; int num1, num2 = 0; int max_xnum = 0; printf("ù¹øÂ° Ç×ÀÇ °³¼ö¸¦ ÀÔ·ÂÇϼ¼¿ä :"); scanf("%d",&num1); printf("\nù¹øÂ° ´ÙÇ×½ÄÀ» ÀÔ·ÂÇϼ¼¿ä(°è¼ö Áö¼ö) :"); for(int i=0; i < num1; i++) { scanf("%f%d",&arr1[i].val,&arr1[i].xnum); if(max_xnum <= arr1[i].xnum) max_xnum = arr1[i].xnum; } printf("\nµÎ¹øÂ° Ç×ÀÇ °³¼ö¸¦ ÀÔ·ÂÇϼ¼¿ä :"); scanf("%d",&num2); printf("\nµÎ¹øÂ° ´ÙÇ×½ÄÀ» ÀÔ·ÂÇϼ¼¿ä(°è¼ö Áö¼ö) :"); for(int j=0; j < num2; j++) { scanf("%f%d",&arr2[j].val,&arr2[j].xnum); if(max_xnum <= arr2[j].xnum) max_xnum = arr1[j].xnum; } int a = 0; int b = 0; int k = 0; int xcount = 0; int ncount = 0; while(a <= num1 && b <= num2) // numº¸´Ù ÀÛÀ»¶§ ¹Ýº¹ { if((arr1[a].val == 0 && arr1[a].xnum == 0) || (arr2[b].val == 0 && arr2[b].xnum == 0)) // µÑÁß¿¡ ÇÑ ´ÙÇ×½ÄÀÇ µ¡¼ÀÀÌ ³¡³µÀ» ¶§ µ¡¼À¹è¿­¿¡ ³ª¸ÓÁö ¹è¿­À» ´Ù »ðÀÔ { if(arr1[a].val == 0 && arr1[a].xnum == 0) // ù¹øÂ° ¹è¿­ÀÌ ¸ðµÎ ´õÇßÀ» ¶§ µÎ¹øÂ° ¹è¿­ °ªÀ» µ¡¼À¹è¿­¿¡ ¸ðµÎ »ðÀÔ { while(b < num2) { add_arr[k].xnum = arr2[b].xnum; add_arr[k].val = arr2[b].val; b++; xcount++; } break; } else if(arr2[b].val == 0 && arr2[b].xnum == 0) // µÎ¹øÂ° ¹è¿­ÀÌ ¸ðµÎ ´õÇßÀ» ¶§ ù¹øÂ° ¹è¿­ °ªÀ» µ¡¼À¹è¿­¿¡ ¸ðµÎ »ðÀÔ { while(a < num1) { add_arr[k].xnum = arr1[a].xnum; add_arr[k].val = arr1[a].val; a++; xcount++; } break; } } if(arr1[a].xnum > arr2[b].xnum) // ù¹øÂ° Ç×ÀÇ Áö¼ö°¡ ´õ Ŭ ¶§ { add_arr[k].xnum = arr2[b].xnum; add_arr[k].val = arr2[b].val; b++; k++; xcount++; } else if(arr1[a].xnum == arr2[b].xnum) // µÎ Ç×ÀÇ Áö¼ö°¡ °°À» ¶§ { add_arr[k].xnum = arr1[a].xnum; add_arr[k].val = arr1[a].val + arr2[b].val; a++; b++; k++; xcount++; } else if(arr1[a].xnum < arr2[b].xnum) // µÎ¹øÂ° Ç×ÀÇ Áö¼ö°¡ ´õ Ŭ ¶§ { add_arr[k].xnum = arr1[a].xnum; add_arr[k].val = arr1[a].val; a++; k++; xcount++; } } printf("\nµ¡¼À :"); for(int i=0; i < xcount; i++) { if(i == xcount-1) { printf(" %.2f x^%d ",add_arr[i].val, add_arr[i].xnum); break; } printf(" %.2f x^%d +",add_arr[i].val, add_arr[i].xnum); } printf("\n°ö¼À :"); for(int i=0; i < num1; i++){ for(int j=0; j < num2; j++){ multi_arr[i+j].val += arr1[i].val * arr2[j].val; multi_arr[i+j].xnum = arr1[i].xnum + arr2[j].xnum; ncount++; if(arr1[i].xnum == arr2[j].xnum) ncount--; // ncount:°ö¼À¹è¿­ÀÇ ¼ö °°ÀºÇ×ÀÌ ³ª¿À¸é count¸¦ -1 } } for(int i=0; i < ncount; i++) { if(i == ncount-1) { printf(" %.2f x^%d ",multi_arr[i].val, multi_arr[i].xnum); break; } printf(" %.2f x^%d +",multi_arr[i].val, multi_arr[i].xnum); } return 0; }