複習副程式呼叫、以陣列型式實現傳址呼叫的簡單練習。
完整程式碼 :
#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次冪 ....]
_______________________________________________
我們透過閱讀,拼湊出真實世界的面貌,
並在反覆的探索及思維中,打破由自我無知與偏見所建立的籓籬。