91 lines
1.8 KiB
C
91 lines
1.8 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
void output_P(int P[]);
|
|
void Padd(int A[], int B[], int C[],int lenA,int lenB);
|
|
|
|
void output_P(int P[]) {
|
|
int i;
|
|
for(i=1;i<P[0]*2;i++){
|
|
printf("%d^%d ",P[i+1],P[i]);
|
|
i++;
|
|
}
|
|
}
|
|
|
|
void Padd(int A[], int B[], int C[],int lenA,int lenB) {
|
|
int i = 1 , j=1 , k=1 ,count=0;
|
|
|
|
while(i<lenA && j<lenB){//分別比較A和B的長度
|
|
if(A[i]>B[j]){
|
|
C[k++] = A[i++];
|
|
C[k++] = A[i++];
|
|
count++;
|
|
}
|
|
if(A[i]<B[j]){
|
|
C[k++] = B[j++];
|
|
C[k++] = B[j++];
|
|
count++;
|
|
}
|
|
if(A[i]==B[j]){
|
|
C[k++] = B[j++];
|
|
i++;
|
|
C[k++] = B[j++] + A[i++];
|
|
count++;
|
|
}C[0]=count;
|
|
}
|
|
|
|
// 測試
|
|
// printf("\nA = (");
|
|
// for(i=0;i<lenA;i++){
|
|
//// printf("A[%d]=%d ,",i,A[i]);
|
|
// printf("%d ",A[i]);
|
|
// }
|
|
// printf(")\nB = (");
|
|
// for(i=0;i<lenB;i++){
|
|
//// printf("B[%d]=%d ,",i,B[i]);
|
|
// printf("%d ",B[i]);
|
|
// }
|
|
// printf(")\nC = (");
|
|
// for(i=0;i<count*2+1;i++){
|
|
//// printf("C[%d]=%d ,",i,C[i]);
|
|
// printf("%d ",C[i]);
|
|
// }printf(")");
|
|
|
|
// 比較好看
|
|
// printf("\nA多項式有%d個元素\n",A[0]);
|
|
// for(i=1;i<A[0]*2;i++){
|
|
// printf("%d^%d ",A[i+1],A[i]);
|
|
// i++;
|
|
// }
|
|
// printf("\nB多項式有%d個元素\n",B[0]);
|
|
// for(i=1;i<B[0]*2;i++){
|
|
// printf("%d^%d ",B[i+1],B[i]);
|
|
// i++;
|
|
// }
|
|
// printf("\nC多項式有%d個元素\n",C[0]);
|
|
// for(i=1;i<C[0]*2;i++){
|
|
// printf("%d^%d ",C[i+1],C[i]);
|
|
// i++;
|
|
// }
|
|
|
|
}
|
|
|
|
int main() {
|
|
int A[] = { 5, 6, 6, 4, 5, 2, 3, 1, 3, 0, 2 };
|
|
int B[] = { 4, 4, 8, 3, 6, 2, 2, 0, 1 };
|
|
int C[13] = { 0 };
|
|
int lenA = sizeof A / sizeof A[0];
|
|
int lenB = sizeof B / sizeof B[0];
|
|
|
|
Padd(A, B, C, lenA, lenB);
|
|
|
|
printf("\nA多項式有%d個元素\nA = ( ",A[0]);
|
|
output_P(A);
|
|
printf(")\nB多項式有%d個元素\nB = ( ",B[0]);
|
|
output_P(B);
|
|
printf(")\nC多項式有%d個元素\nC = ( ",C[0]);
|
|
output_P(C);
|
|
printf(")");
|
|
return 0;
|
|
}
|