**私の推論を説明する背景情報に興味がない場合は、私の質問の最後までスキップしてください。
次のような多項式の単体テストを実行するために、プログラムに読み込む必要がある多項式のセットがあります。
- 合成部門
- 添加
- 減算
- 規模
- 乗算
- ルーツ
そのため、BRLCAD で使用される関数をテストするために、さまざまな数値を入力できるようにする必要がありますが、数値を読み取るための効率的な解決策を見つけるのに苦労しています。私の現在のアプローチ:
コマンドラインを考えると:
./unit_test sd 2 3 4 8 1 4 5
- sd - 合成除算を実行します
- 2 - 最初のポリゴンの次数
- 3,4,8 - 3x^2 + 4x + 8
- 1 - 2 番目のポリゴンの次数
この形式で一連の数値を読み取るアルゴリズムを作成するのは面倒で、他の人が理解するのは非常に混乱します。さらに、比較する答えとして読み取る他の 2 つの多項式をまだ実装していません。(これはオープン ソースであるため)ファイル、私は自分の作品にある程度の透明性を持たせたいと思っています)。
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 を使用することを考えましたが、上からさらに 2 つの多項式を読み込むのではなく、そのような方法で使用する価値があるかどうかはわかりません。
多項式の最大次数が 4 の場合
./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