**如果您对解释我的推理的背景信息不感兴趣,请跳到问题的最底部。
我有一组多项式方程,我需要读入我的程序来执行多项式的单元测试,例如
- 合成师
- 添加
- 减法
- 规模
- 乘法
- 根
所以我需要能够输入范围广泛的数字来测试 BRLCAD 中使用的功能,尽管我很难想出一个有效的解决方案来读取数字。我目前的做法:
给定命令行:
./unit_test sd 2 3 4 8 1 4 5
- sd - 进行合成 split
- 2 - 第一个多边形的度数
- 3,4,8 - 3x^2 + 4x + 8
- 1 - 第二多边形的度数
编写一个算法来读取这种格式的一组数字是很麻烦的,而且让其他人理解起来很困惑,而且我还没有实现其他两个多项式来读取作为要与之比较的答案。(因为这是一个开源文件,我希望我的工作具有一定的透明度)。
if(strcmp(argv[1],"sd") == 0){
poly_eqn1.dgr = atoi(argv[2]);
/* start at argv[3], run degree count plus one times */
for(counter = 0; counter < (eqn1.dgr + 1); counter++)
poly_eqn1.cf[counter] = atof(argv[counter+3]);
poly_eqn2.dgr = atoi(argv[4 + poly_eqn1.dgr]);
/* start at end of degree one counter */
for(counter = 0; counter < (dgr2 + 1); counter++)
poly_eqn2.cf[counter] = atof(argv[counter+5+dgr]);
/* grab the answer from end of data */
return test_synthetic(//input proper data...);
}
如果设置了最大次数,使用 sscanf
读取我的多项式会更有效吗? 在编写初始方法后,我考虑过使用 sscanf,但我不确定以这种方式使用它是否值得,而不是从上面写两个更多的多项式读入:
给定多项式的最大次数为四
./unit_test sd 2,0,0,2,4,5 1,0,0,0,2,3
- 2,0,0,2,4,5 - 2 阶,0x^4 + 0x^3 + 2x^2 + 4x + 5
最佳答案
如果我是你,我会努力以人类可读的格式支持你的参数。
例如,应该可以解析以下形式的输入:
./unit_test "(3*x^2+4*x+8)/(4*x+5)"
当然,您可能必须编写词法解析器才能理解此输入,但从用户的角度来看,这将是最容易理解的。
关于c - 使用 argv[] 从命令行中提取数字集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964614/