C語言系列 : 多階次冪式相加

複習副程式呼叫、以陣列型式實現傳址呼叫的簡單練習。

完整程式碼 : 

#include "pch.h"
#include <iostream>
//輸入多項式A,B,輸出多項式C
//一個用來運算的function
//一個用來顯示結果的function
void addition(int [],int [],int []);
void show(int []);
int compare(int, int);

int main()
{
		int A[] = { -1,3,4,5,2,3,0,2 };
		int B[] = { -1,3,3,6,2,2,0,1 };
		int C[20] = { -1 };
		addition(A, B, C);
		printf("\nA = ");
		show(A);
		printf("\nB = ");
		show(B);
		printf("\nANS = ");
		show(C);
		return 0;

}

void addition(int a[], int b[], int c[]) {
	int m = 2, n = 2, r = 2;
	char ch;
	while ((m <= a[1]*2) && (n <= b[1]*2)) {
		ch = compare(a[m], b[n]); //比較a與b的指數
		switch (ch) {
			case '=' :
				c[r+1] = a[m+1] + b[n+1]; //係數相加
				if (c[r + 1] != 0) {
					c[r] = a[m];
					r += 2;
				}
				m += 2; n += 2;
				break;
			case '>' :
				c[r + 1] = a[m + 1]; //a的值移至c
				c[r] = a[m];
				m += 2; r += 2;
				break;
			case '<':
				c[r + 1] = b[n + 1]; //b的值移至c
				c[r] = b[n];
				n += 2; r += 2;
				break;
		}
	}
	c[1] = r / 2 - 1;
}

void show(int n[]) {
	printf("( %d ",n[1]);
	for (int i = 2; i < n[1]*2+1; i+=2) {
		printf("%d %d ",n[i],n[i+1]);
	}
	printf(")");
}

int compare(int a, int b) {
	if (a > b) {
		return '>';
	}
	else if (a < b) {
		return '<';
	}
	else return '=';
}

 

執行結果 : 

陣列儲存格式為: [多項式總項數 A係數 A次冪 B係數 B次冪 ....]

 

_______________________________________________

我們透過閱讀,拼湊出真實世界的面貌,
並在反覆的探索及思維中,打破由自我無知與偏見所建立的籓籬。