C语言实现一元多项式加法运算
#include <stdio.h>
#include <stdlib.h>
#define MAX_TERMS 101
typedef struct {
float coef;
int expon;
} polynomial;
polynomial terms[MAX_TERMS];
int avail = 0;
void attach(float coefficient, int exponent) {
if (avail >= MAX_TERMS) {
fprintf(stderr, "Too many terms in the polynomial\n");
exit(EXIT_FAILURE);
}
terms[avail].coef = coefficient;
terms[avail].expon = exponent;
avail++;
}
void polynomial_add(polynomial *poly1, int terms1, polynomial *poly2, int terms2, polynomial *result[], int *terms_result) {
int i = 0, j = 0;
*terms_result = 0;
while (i < terms1 && j < terms2) {
if (poly1[i].expon == poly2[j].expon) {
float coefficient = poly1[i].coef + poly2[j].coef;
if (coefficient != 0.0) {
attach(coefficient, poly1[i].expon);
*result = terms + avail - 1;
(*terms_result)++;
}
i++;
j++;
} else if (poly1[i].expon > poly2[j].expon) {
attach(poly1[i].coef, poly1[i].expon);
*result = terms + avail - 1;
(*terms_result)++;
i++;
} else {
attach(poly2[j].coef, poly2[j].expon);
*result = terms + avail - 1;
(*terms_result)++;
j++;
}
}
for (; i < terms1; i++) {
attach(poly1[i].coef, poly1[i].expon);
*result = terms + avail - 1;
(*terms_result)++;
}
for (; j < terms2; j++) {
attach(poly2[j].coef, poly2[j].expon);
*result = terms + avail - 1;
(*terms_result)++;
}
}
void print_polynomial(polynomial *poly, int terms) {
for (int i = 0; i < terms; i++) {
printf("%.1fx^%d", poly[i].coef, poly[i].expon);
if (i < terms - 1) {
printf(" + ");
}
}
printf("\n");
}
int main() {
polynomial poly1[MAX_TERMS] = {{5, 4}, {4, 3}, {3, 2}, {2, 1}, {1, 0}};
polynomial poly2[MAX_TERMS] = {{2, 4}, {4, 2}, {6, 1}, {8, 0}};
polynomial *result[MAX_TERMS];
int terms_result;
polynomial_add(poly1, 5, poly2, 4, result, &terms_result);
printf("Result: ");
print_polynomial(*result, terms_result);
return 0;
}
本文提供了一个用C语言实现一元多项式加法运算的完整代码示例,并详细解释了代码逻辑。该代码采用结构体和指针来存储和操作多项式,并通过函数实现加法运算功能。
代码解释:
- 结构体定义:
typedef struct {
float coef;
int expon;
} polynomial;
定义了一个名为polynomial的结构体,用于存储多项式的系数和指数。
- 全局数组和变量:
polynomial terms[MAX_TERMS];
int avail = 0;
定义了一个全局数组terms,用来存储多项式的项,并定义一个变量avail来记录当前数组中可用位置的数量。
attach函数:
void attach(float coefficient, int exponent) {
// ...
}
该函数将一个新的项添加到terms数组中,并将avail计数器加1。
polynomial_add函数:
void polynomial_add(polynomial *poly1, int terms1, polynomial *poly2, int terms2, polynomial *result[], int *terms_result) {
// ...
}
该函数接收两个多项式的指针、项数和指向结果多项式的指针,实现两个多项式的加法运算,并更新结果多项式的项数。
print_polynomial函数:
void print_polynomial(polynomial *poly, int terms) {
// ...
}
该函数接收一个多项式的指针和项数,将多项式以标准格式输出到控制台。
main函数:
int main() {
// ...
}
main函数定义了两个多项式poly1和poly2,调用polynomial_add函数执行加法运算,并调用print_polynomial函数输出结果。
本代码示例演示了如何使用C语言实现一元多项式的加法运算,并通过结构体和指针来有效地操作多项式数据。该代码可以作为学习和参考,并可以进一步扩展实现其他多项式运算功能,例如减法、乘法等。
原文地址: https://www.cveoy.top/t/topic/lRG4 著作权归作者所有。请勿转载和采集!