2014-09-23 207 views
0

我正在寫一個程序,修改csv文件中的數據。 在CSV文件中,組織如下..C++嵌套循環

X座標,Y座標,Z座標,資訊,X,Y,Z,資訊,X,Y,Z信息..

第一個X座標從第4列開始,下一個在第8列的之後是4列。對於Y,它是第5列和第9列,依此類推。由於我將數據保存到雙端隊列中,因此第一個數據對應於x的數據[row#] [3],y將是data [row#] [5]。

for(int k=0; k<618; k++) { //all rows 618 
    for(int l=3; l<96; l=l+4) { //x columns 
     for(int m=4; m<97; m=m+4) { //y columns 
      data[k][l] = (data[k][l])*(data[k][2]) + (data[k][m])*(data[k][1]); 

在循環中的計算,我想它來代替與我從這個等式獲得的值的列(k)的所有x值(L)(如我爲循環創建)

x' = x* cos(theta) + y* sin(theta) 

爲COS(THETA)和sin(THETA)的值在2列和第3被發現對於所有行(因此,數據[k]的[2]和數據[k]的[1]。

不幸的是,在用幾個cout語句進行測試時,我注意到它沒有按照需要進行操作。

LOOP的期望的行爲:通過循環

  • 第一時間:計算被用於行1中,x =值在col.5做內部4列和y =值

  • *的端循環迭代,重新開始,k,l和m得到更新爲2,9,10。

  • 對這些新值執行循環計算,等等。

主要問題是K,L,M沒有數據後,根據需要三個正在更新[k]的[1]線可能是什麼造成的? 謝謝。

+0

什麼了調試器顯示,當你踩到過? – 2014-09-23 01:17:15

+0

你的語言不清楚。在data [k] [l] ...'第一次執行後,只應該更新** m **。你觀察到什麼? – Beta 2014-09-23 01:23:20

+0

@貝塔我道歉。是的,它只是更新m,但我希望它同時更新m和l - 因爲它做這樣的事情(赦免錯誤的語法,它是爲了得到點)(int l = 19&& m=20; l <30& & m<30; l = l + 4 && m = m + 4) – user3295674 2014-09-23 01:26:22

回答

1

你不瞭解嵌套循環。

你打算怎麼是這樣的:

for(int k=0; k<618; k++) { //all rows 618 
    for(int n=0; n<24; ++n) { //groups 
    l = 4*n + 3; 
    m = 4*n + 4 
    data[k][l] = (data[k][l])*(data[k][2]) + (data[k][m])*(data[k][1]); 
    } 
} 
+0

謝謝你,在看到這個之前,我曾嘗試自己解決它 - 這也是一個解決方案嗎? codeshare.io/QAl5Z – user3295674 2014-09-23 01:52:22

+0

@ user3295674:是的,如果你還記得初始化'l'。 – Beta 2014-09-23 02:35:15