2014-09-23 211 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