2014-09-23 3 views
0

Я пишу программу, которая изменяет данные в файле csv. В файле CSV, в КОЛОННЫ организованы следующим образом ..C++ Вложенные для циклов

X-координата, Y-координата, Z-координаты, информация, X, Y, Z, информация, X, Y, Z подробнее ..

Первая координата X начинается в столбце 4, а следующая - 4 столбца после, в 8. Для Y это столбец 5 и столбец 9 и так далее. Поскольку я сохранил данные на deque, первые соответствуют данным [row #] [3] для x, а y будут данными [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]); 

При вычислении в петле, я хочу, чтобы заменить все значения X (L) в столбцах (к) со значением я получаю от этого уравнения (как я создал для цикла)

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

значения для соз (тета) и Sin (Theta) находятся в колонках 2 и 3 для всех строк (следовательно, данные [к] [2] и данных [к] [1].

К сожалению, при проверке этого с несколькими заявлениями cout я заметил, что он не делает по желанию.

DESIRED ПОВЕДЕНИЕ LOOP:

  • первый раз через петлю: Расчет выполняется для строки 1, х = значение внутри колонны 4 и у = значение в col.5

  • * конец итерация цикла, повторный запуск, k, l и m обновляются до 2,9,10.

  • Расчет в цикле выполняется для этих новых значений и так далее.

Основной вопрос к, л, м, не все три обновляется по желанию после данных [к] [л] линия Что может быть причиной этого? Спасибо.

+0

Что ваш отладчик шоу, когда переступил? –

+0

Ваш язык неясен. После первого выполнения 'data [k] [l] ...' необходимо обновить только ** m **. Что вы наблюдаете? – Beta

+0

@Beta Прошу прощения. Да, это только обновление m, но я хочу, чтобы он обновлял как m, так и l - для того, чтобы он сделал что-то вроде этого (прошу прощения за неправильный синтаксис, чтобы получить точку) для (int l = 19 & & m=20; l <30 & & m<30; l = l + 4 && m = m + 4) – user3295674

ответ

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

+0

@ user3295674: Да, если вы не забыли инициализировать 'l'. – Beta

Смежные вопросы