Arrays 有人能批评我的C代码计算定积分吗?
下面的代码不涉及任何数值积分或与之相关的任何内容-只是计算形式为Ax^2+Bx+C的定积分的基本规则。我很想听听你们的意见,因为我相对较新,还在学习。Arrays 有人能批评我的C代码计算定积分吗?,arrays,c,function,pointers,Arrays,C,Function,Pointers,下面的代码不涉及任何数值积分或与之相关的任何内容-只是计算形式为Ax^2+Bx+C的定积分的基本规则。我很想听听你们的意见,因为我相对较新,还在学习。 这个编码练习是为了测试我们在过去几周所学的内容,因此可能不鼓励使用比下面的关键字更复杂的内容以及其他标准库函数 #include <stdio.h> #include <stdlib.h> #include <math.h> void inputDegree(int *deg) { printf("E
这个编码练习是为了测试我们在过去几周所学的内容,因此可能不鼓励使用比下面的关键字更复杂的内容以及其他标准库函数
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void inputDegree(int *deg) {
printf("Enter the degree of the polynomial: ");
scanf("%d", deg);
}
void inputCoeffs(int deg, double *coeffs) {
printf("\nEnter the coefficients of the polynomial: \n\n");
for(int i = 0; i <= deg; i++) {
printf("Coefficient of degree %d: ", deg - i);
scanf("%lf", &coeffs[i]);
}
}
void inputLimits(double *lowerL, double *upperL) {
printf("\nEnter the lower limit of integration: ");
scanf("%lf", lowerL);
printf("\nEnter the upper limit of integration: ");
scanf("%lf", upperL);
}
void computeIntegralCoeffs(int deg, double *coeffs, double *integCoeffs) {
for(int i = 0; i <= deg; i++) {
integCoeffs[i] = coeffs[i] / (deg + 1 - i);
}
}
double evaluateIntegral(int degree, double *integCoeffs, double lowerLimit, double upperLimit) {
double lower = 1, upper = 1;
for(int i = 0; i <= degree; i++) {
lower += integCoeffs[i] * pow(lowerLimit, (degree + 1 - i));
}
for(int i = 0; i <= degree; i++) {
upper += integCoeffs[i] * pow(upperLimit, (degree + 1 - i));
}
return upper - lower;
}
int main() {
int degree;
double lowerLimit;
double upperLimit;
double integral;
double *coefficients = NULL;
double *integralCoefficients = NULL;
inputDegree(°ree);
coefficients = (double *)malloc((degree + 1) * sizeof(double));
integralCoefficients = (double *)malloc((degree + 1) * sizeof(double));
inputCoeffs(degree, coefficients);
inputLimits(&lowerLimit, &upperLimit);
computeIntegralCoeffs(degree, coefficients, integralCoefficients);
integral = evaluateIntegral(degree, integralCoefficients, lowerLimit, upperLimit);
printf("\n\nEvaluating the definite integral gives us the following area: \t%lf\n", integral);
free(coefficients);
free(integralCoefficients);
return 0;
}
#包括
#包括
#包括
无效输入度(int*deg){
printf(“输入多项式的次数:”);
扫描频率(“%d”,度);
}
无效输入系数(整数度,双*系数){
printf(“\n输入多项式的系数:\n\n”);
对于(int i=0;i,无特定顺序:
不测试scanf的返回值是自找麻烦
它是C语言中的intmain(void)
printf
如果没有终止新行,可能需要fflush(stdout)
才能显示输出
缩进你的代码,使它保持在每行大约70个字符的范围内。这避免了编辑器中丑陋的换行和stackoverflow等网站上的水平滚动条
当您下一步要做的是从malloc
为指针分配一个值时,将NULL
分配给指针没有意义
从stdlib.h
返回主目录,并显示EXIT\u SUCCESS
(或EXIT\u FAILURE
)
减少无用的长篇大论。告诉我们以下内容
->the
无特定顺序:
不测试scanf的返回值是自找麻烦
它是C语言中的intmain(void)
printf
如果没有终止新行,可能需要fflush(stdout)
才能显示输出
缩进你的代码,使它保持在每行大约70个字符的范围内。这避免了编辑器中丑陋的换行和stackoverflow等网站上的水平滚动条
当您下一步要做的是从malloc
为指针分配一个值时,将NULL
分配给指针没有意义
从stdlib.h
返回主目录,并显示EXIT\u SUCCESS
(或EXIT\u FAILURE
)
减少无用的长篇大论。告诉我们以下内容
->the
我可能会按原样提交这个,但我很想听听你们的意见,这样我可以更好地编写代码
函数,lower
和upper
的初始化值重要吗?我的意思是,在这种情况下,将其初始化为0而不是1更好吗?它们给出了相同的结果。米克尔B。感谢你推荐我到论坛。我将重新发布。使用int main(void)
。结构int main()
几十年来一直被回避,只允许支持遗留代码。在1987年至1992年(或更早)的某个时候有人认为允许它是个好主意,认为旧样式会很快消失。很明显,它还没有消失,但仍在被教授。不要使用它。我可能会按原样提交,但我希望听到你们的意见,以便我可以编写更好的代码。问题:在evaluateIntegral()下
函数,lower
和upper
的初始化值重要吗?我的意思是,在这种情况下,将其初始化为0而不是1更好吗?它们给出了相同的结果。米克尔B。感谢你推荐我到论坛。我将重新发布。使用int main(void)
。结构int main()
几十年来一直被回避,只允许支持遗留代码。在1987年至1992年(或更早)的某个时候,有人认为允许它是一个好主意,认为旧样式会很快消失。很明显,它没有消失,但仍在被教授。不要使用它。