【问题标题】:C++ for loop using an array使用数组的 C++ for 循环
【发布时间】:2016-04-28 13:17:21
【问题描述】:

我知道这是一个基本问题,但我是一个 Python 用户,对 C++ 很陌生

我需要使用for 循环计算函数(cosmology.bias_eff),其输入参数(Mass_min) 需要乘以数组(M_ratio)

我在这里使用两个for 循环犯了一个错误

vector<double> M_ratio = {1.0,0.9,1.1,1.05,1.1,1.15,1.2,1.25,1.2};
double Mass_min = 2e13;
double Delta0 = 200.0;

for (redshift=0.0;redshift<1.7;redshift=redshift+0.2)
{   
    for (size_t i=0; i<M_ratio.size(); i++)
    {
        double Delta = cosmology.DeltaR(Delta0, redshift);

        double bias_eff = cosmology.bias_eff(M_ratio[i]*Mass_min,redshift,Delta);

        cout << bias_eff <<"," << endl;
    }
}

我想要的是,对于for循环中的每个redshift,我希望Mass_min乘以M_ratio

即对于redshift = 0.0, Mass_min = Mass_min*1.0,对于redshift = 0.2, Mass_min = 0.9*Mass_min 等等。

【问题讨论】:

    标签: c++ arrays for-loop multiplication


    【解决方案1】:

    你只需要一个循环:

    vector<double> M_ratio = {1.0,0.9,1.1,1.05,1.1,1.15,1.2,1.25,1.2};
    double redshift;
    int i;
    for (redshift=0.0,i=0; i<M_ratio.size(); i++,redshift+=0.2) {
      double Delta = cosmology.DeltaR(Delta0, redshift);
      double bias_eff = cosmology.bias_eff(M_ratio[i]*Mass_min,redshift,Delta);
      cout << bias_eff <<"," << endl;
    }
    

    在每次迭代中,redshift 递增 0.2,同时 i 递增 1。在循环内部进行所需的计算。

    【讨论】:

    • 但不应该是for (double redshift = 0.0, i=0;) 而不是int 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多