int main argc参数个数

时间:2014-11-30 16:21:13

标签: c++

尝试使用蒙特卡罗模拟,我正在努力使用C ++。我是一名数学家,这是我第一次使用C ++。

/* The main routine
 */

int main(int argc,char *argv[])
{
    struct timeval tv;
    struct timezone tz;
    double res,err;
    int loops,n,i;

    /* require correct number of arguments
     */
    if (argc != 3)
    {
        fprintf(stderr,usage);
        exit(0);
    }

    n     = atoi(argv[1]);    /* first int */
    loops = atoi(argv[2]);    /* 2nd int */

    /* seed the random number using system time
     * tv.tv_sec contains time in seconds, tv.tv_usec in microseconds
     */
if((r = gsl_rng_alloc(gsl_rng_mt19937)) == NULL) {
    printf("ERROR: Could not create random number generator\n");
    exit(1);
  }
    gettimeofday( &tv, &tz );
    gsl_rng_set(r, tv.tv_sec + tv.tv_usec );


    for (i=0; i<100000; i++) gsl_rng_get (r);

    for (i=0; i<loops; i++)
    {
        res = mcint(n,&err);
        printf("%d  %g  %g\n",i,res,err);
    }

    return(1);
}

其中mcint是我的蒙特卡罗功能。

问题是argc没有正确数量的参数(3)。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

argc是从命令行调用程序时的参数数量。

你的程序需要3个参数。第一个始终是程序可执行文件的名称。因此,它需要您必须提供的其他参数:第一个是第一个integer(n),第二个是您希望它执行的迭代次数。

解决问题的最简单方法是编译程序并从命令行调用它:

  MYMONTECARLO 100 1000 

如果您在IDE下,请查看手册中的如何提供此类运行时参数。例如,对于code :: blocks,请查看this question