1

我正在编写一个程序来解决一种最小值。生成树问题。我有 2 种不同的算法,我已经在两个单独的 .cpp 文件中工作,我分别命名为 kruskels.cpp 和 prims.cpp。

我的问题是这样的:

每个文件都使用以下命令行来运行它。时间 ./FILENAME INPUTFILE FACTOR

我想做一个程序,根据输入的输入文件,将运行 kruskels.cpp 或 prims.cpp。我怎样才能做到这一点?

该程序必须将这些命令行参数传递给 kruskels 或 prims。每个文件(kruskels.cpp 和 prims.cpp)都设计为使用这些命令行参数运行(因此它们将 INPUTFILE 和 FACTOR 作为变量来执行文件 io)。

这应该适用于 c++。

4

3 回答 3

6

system您可以使用该函数调用外部程序。

但是,最好将 Kruskal 和 Prim 求解器以模块化方式构建为类,并main根据输入从您的 中实例化适当的类。为此,您需要将 kruskels.cpp、prims.cpp 和 main.cpp 链接到一个可执行文件中。

于 2010-04-08T16:54:32.987 回答
2

标准方法是使用system(). 您可能还想查找popen()(或者,在 Windows 上,_popen())。

编辑:我的假设是您有两个可执行文件并且(关键点)希望将它们保留为单独的可执行文件。在这种情况下,使用系统非常简单。例如,您可以执行以下操作:

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 指出的那样),您可能希望创建一个可执行文件,而在该可执行文件中使用 Prim 和 Kruskal 方法的实现。如果没有看到您为他们编写的代码,则无法猜测这将是多少工作。

于 2010-04-08T16:55:22.283 回答
0

如果在执行两个子程序之一后需要顶级程序重新获得控制权,请使用 system() 或 popen(),如果不需要,则可以使用 execve()

于 2010-04-08T17:51:24.807 回答