我很新的C特定(指定)迭代++,但我无法找到这个网上一种变通方法,我觉得有可能是一个有趣的,优雅的解决方案成为可能。跳过的for循环
我最终想要的代码行星运动越级算法。我定义一个类中调用地球
Planet(double mass, double x0, double x1, double v0, double v1)
和我有一个数组存储为4个不同星球的信息:
Planet planets[] = {
Planet(2.0, -0.5, 0, -0.94, 0.65),
Planet(1.0, -0.6, -0.2, 1.86, 0.7),
Planet(1.0, 0.5, 1.0, -0.44, -1.40),
Planet(0.4, 0.6, 0.3, 1.15, -1.50)
};
我将要计算的力由于重力每个行星上的每个行星。这涉及实现用于上行星上的力的数学公式I:F_i =对i总和= j的[(G M_I m_j)/ r_ij],其中i和j表示两个行星,j是每次递增,并且r_ij两者之间的距离。
之前,我开始思考,作为一个整体,我是测试如果我可以使用一个for循环,选择从数组中的特定地球,并从地球特定组件,并打印。这很好地通过
for(int i=0; i<4; ++i){
cout << planets[i].getvx() << "\n";
}
但是,我想尝试排除一个特定的星球,说我计算j = 2的力量。
for(int i=0; (i<j || i>j) && i<4; ++i){
cout << planets[i].getvx() << "\n";
}
该循环终止于2中,仅打印p的V0的值(如通过类定义)[0]和P [1],而不是P [3]以及我所希望的。同样,j = 1仅为p [0]和p [1]打印v0。
有没有把内部的一个条件环路符合我的需要,或者我应该重新考虑我的做法的便利方式?
你放在for循环中的条件表示它什么时候结束,因此当我到达2时,它会结束(2 <2 == false)。这就是为什么它只能打印p [0]和p [1]。 – Jcao02 2015-02-24 04:49:17