我很新的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