C言語における多項式計算の実装方法
多項式計算をC言語で行うには、次の手順で使用できます。
- 多項式のデータ構造を定義し、多項式の各項を表すために配列または連結リストが使用できます。各項には係数と指数を含めることができます。
- struct Term {//項
int coefficient;// 係数
int exponent;// 指数
};struct Polynomial {//多項式
struct Term terms[MAX_TERMS];//項
int count;//項数
}; - ユーザーによる入力から多項式の係数と指数を取得し、多項式のデータ構造へ保存する入力関数を生成する。
- 関数 void input(Polynomial *poly) に多項式の次数を入力します。printf(“多項式の項数を入力してください:”);
scanf(“%d”, &(poly->count));次に、各項の係数と次数を入力します。
printf(“多項式の係数と指数を入力してください:\n”);
for (int i = 0; i < poly->count; i++) {
printf(“第%d項:”, i + 1);
scanf(“%d %d”, &(poly->terms[i].coefficient), &(poly->terms[i].exponent));
} - 多項式の加算処理を行う関数をインプリメントし、2 つの多項式を加算してその結果を最初の多項式内に保存する。
- i、j、kを0に初期化します。その上で、iがpoly1の要素数未満かつjがpoly2の要素数未満である間、以下の処理を行います。
– poly1のi番目の要素の次数がpoly2のj番目の要素の次数よりも大きい場合、poly1のi番目の要素をk番目の要素にコピーし、iを1増加させます。
– poly1のi番目の要素の次数がpoly2のj番目の要素の次数よりも小さい場合、poly2のj番目の要素をk番目の要素にコピーし、jを1増加させます。
– それ以外の場合は、poly1のk番目の要素の係数をpoly1のi番目の要素の係数とpoly2のj番目の要素の係数を足して更新し、指数をpoly1のi番目の要素の指数に設定します。その後、iとjを両方1増加させます。次に、iがpoly1の要素数未満である間、以下を行います。
– poly1のi番目の要素をk番目の要素にコピーします。
その後、jがpoly2の要素数未満である間、以下を行います。
– poly2のj番目の要素をk番目の要素にコピーします。
最後に、poly1の要素数をkに設定します。
- 多項式に掛け算関数を導入し、2 つの多項式を掛け合わせて、その結果を最初の多項式に格納する。
- for (int i = 0; i < poly1->count; i++) {
for (int j = 0; j < poly2->count; j++) {
temp.terms[temp.count].coefficient = poly1->terms[i].coefficient * poly2->terms[j].coefficient;
temp.terms[temp.count].exponent = poly1->terms[i].exponent + poly2->terms[j].exponent;
temp.count++;
}
} - 多項式の値を画面に出力する関数を実装する
- void display(Polynomial *poly) {
printf(“多項式の項数:%d\n”, poly->count);for (int i = 0; i < poly->count; i++) {
printf(“%dx^%d “, poly->terms[i].coefficient, poly->terms