C:通过命令行参数生成多项式函数



对于我的微积分课,经常要求它找到两点之间的平均速度来找到瞬时速度,这需要我做f(b) - f(a) / b - a。我想把参数传递给程序(最终加载到我的Ti-84上(,以快速解决这个问题,理想情况下这样工作:./a.out 2 4 -1 , 2.9 2.9999产生多项式2x^2 + 4x - 1,该多项式将在2.92.9999上运行。到目前为止,我已经在这段代码中编写了大部分逻辑,但我很难将其放入正确的C.中

#include<stdio.h>
int main(int argc, char *argv[])
{
int comma; // Ex: ` ./a.out 1 2 3 , 4 5 ` comma is at index 3
// Find out where comman is located
for ( int i=1;i<argc; i++)
{
if (argv[i] == ','){
int comma = i;
break;
}
}
printf("%d", comma);
// PSUEDO-CODE START
//
// Problem: f(b) - f(a) / b - a
//
// Idea
// ------------------------------------------------------------
// ./a.out 7 2 3 , 2 5
// // Right now argc is 6
// // Right now comma is 4
// polynomialOrder = argc - comma
//
// // Get bigger number for the / b - a part
// firstNum  = argv[comma + 1]
// secondNum = argv[comma + 2]
// biggerNum = ( firstNum > secondNum ) ? firstNum : secondNum;
// smallerNum = ( firstNum < secondNum ) ? firstNum : secondNum;
//
// ------------------------------------------------------------
//
// Psuedo-code:
//
// for  (int i=polynomialOrder; i >= 0; i--)
// {
//      if (i == 0){ function += argv[i]} // I don't want 3x^2 + 2x^1 + 4^0 , the
4^0 should be 4
//      else{
//              // Generate a function?
//              polynomial += argv[i]^i;  // The += appends to the function
//      }
// }
// // result is -7x^2 + 2x^1 + 1
//
// Function generated:
// -------------------------------------------------------
// float polynomial(a, b) {
//      float result;
//      float a_result = (-7*(a**2)) + (2*(a**1)) + 1;
//      float b_result = same as ^, substitute in b
//      float result = (b_result - a_result) / ( b - a);
//      return return;
// }
// -------------------------------------------------------
// }
// -------------------------------------------------------
// polynomial( smallerNum, biggerNum );
return 0;
}

至少这些问题:

比较错误

','不是字符串,并且是strcmp()的无效参数。当字符串相等时,strcmp()返回0。

// if (strcmp(argv[i], ',')) // Check if arg is ','
if (strcmp(argv[i], ",") == 0) // Check if arg is ","

本地对象

comma仅是块的本地。该comma在中断之后不存在。稍后的CCD_ 11没有可访问的comma

{
printf("Parameters to function");
int comma = i; // All before are parts of function, after params
break;
}

无效电源代码

// (-7*(a**2)) + (2*(a**1)) + 1;
-7*pow(a,2) + 2*pow(a,1) + 1;
// or 
-7*a*a + 2*a + 1;
// or numerical best stability as 
(-7*a + 2)*a + 1;

floatdouble

当空间至关重要或速度在精度/范围内至关重要时,请使用float。在C中,最好使用double作为默认的浮点类型。

编译器后警告/错误

OP的代码编译失败。发布有关剩余问题的错误、警告和详细问题。

如果所有代码都是伪代码,请将其发布在代码的开头。

最新更新