1

min の型を解くプログラムを書いています。スパニングツリーの問題。kruskels.cpp と prims.cpp という名前の 2 つの個別の .cpp ファイルで動作する 2 つの異なるアルゴリズムがあります。

私の質問はこれです:

各ファイルを実行するには、次のコマンド ラインが必要です。time ./FILENAME INPUTFILE FACTOR

入力ファイルに応じて、kruskels.cpp または prims.cpp を実行するプログラムを作成したいと考えています。これどうやってするの?

このプログラムは、これらのコマンド ライン引数を kruskels または prims に渡す必要があります。各ファイル (kruskels.cpp と prims.cpp) は、これらのコマンド ライン引数を使用して実行されるように設計されています (したがって、ファイル io を実行する変数として INPUTFILE と FACTOR を取り込みます)。

これは c++ 用である必要があります。

4

3 に答える 3

6

関数を使用して外部プログラムを呼び出すことができますsystem

ただしmain、Kruskal および Prim ソルバーをクラスとしてモジュール方式で構築し、入力に従ってから適切なクラスをインスタンス化する方がはるかに優れています。このために、kruskels.cpp、prims.cpp、および main.cpp を単一の実行可能ファイルにリンクします。

于 2010-04-08T16:54:32.987 に答える
2

を使用するのが標準的な方法ですsystem()。また、検索することもできますpopen()(または、Windows では、_popen())。

編集:私の仮定は、2つの実行可能ファイルがあり、(重要な点)それらを別々の実行可能ファイルとして保持したいということでした。その場合、システムの使用は非常に簡単です。たとえば、次のようなことができます。

std::stringstream buffer;

if (use_Kruskals)
   buffer << "Kruskals " << argv[1] << argv[2];
else
   buffer << "Prims " << argv[1] << argv[2];

system(buffer.str().c_str());

何をしているかによって (そして Eli が指摘したように)、単一の実行可能ファイルを作成し、代わりにその 1 つの実行可能ファイルに Prim と Kruskal のメソッドを実装することをお勧めします。ただし、それらのコードを見なければ、これがどれだけの作業になるかを推測することは不可能です.

于 2010-04-08T16:55:22.283 に答える
0

2 つの子プログラムの 1 つを実行した後、トップ プログラムが制御を取り戻す必要がある場合は、system() または popen() を使用します。必要ない場合は、execve() を使用できます。

于 2010-04-08T17:51:24.807 に答える