2013-06-12 56 views
0

我有一個數組,裏面填充了i個元素。我想檢查兩個人之間發生的事情。到目前爲止,我只能檢查這個數組中的一個特定元素會發生什麼,我怎麼能在2之間做到這一點?檢查數組中的兩個點

我的陣列填寫這樣的:

int iSegment = pDatagram->header.start - 1; 

pdX[0] = (-(pDatagram->distances[0]) * ROD4::dCos_table[0]); 
pdY[0] = ((pDatagram->distances[0]) * ROD4::dSin_table[0]); 
iSegment += 1; //correct start of interval #1 

//calculate cartesian values 
for(int i = 1 ; i < pDatagram->distanceCount; i++) 
{ 
    pdX[i] = (-(pDatagram->distances[i]) * ROD4::dCos_table[iSegment]); 
    pdY[i] = ((pDatagram->distances[i]) * ROD4::dSin_table[iSegment]); 
    iSegment += pDatagram->header.resolution; 
} 

而且我檢查什麼在70元與以下行發生的事情:

pdX[70] = (-(pDatagram->distances[70]) * ROD4::dCos_table[70]); 
if(pdX[70] > 0 && pdX[70] < 45) // these are to test the distances of the 70th element 
{ 
    cout << "My line is broken in the X axis" << endl; 
} 

我怎麼會去檢查,看看在第40到第70個元素之間會發生什麼?

+0

'std :: for_each'也許? – arne

+1

雖然我可以得到你所做的,但我無法理解最後一個問題。 「發生了什麼」是什麼意思?您是否在檢查所有這些點是否「線路斷開」? – woosah

+0

@woosah耶人。看看我在做第70個元素?我想要用40和70之間的每個元素(例如) – N0xus

回答

0

嘗試像下面,但它適應您的需求

for(int i = 1; i < pDatagram->distanceCount; i++) { 

    pdX[i] = (-(pDatagram->distances[i]) * ROD4::dCos_table[iSegment]); 
    pdY[i] = ((pDatagram->distances[i]) * ROD4::dSin_table[iSegment]); 
    iSegment += pDatagram->header.resolution; 

    if (i <= 70 && i >= 40) { 
     if(pdX[i] > 0 && pdX[i] < 45) { 
      cout << "My line is broken in the X axis" << endl; 
     } 
    } 
} 
0

如果您正在使用C數組,我只想用一個while循環通過必需的元素,從開始到結束。雖然,我仍然不確定pdX是什麼,它似乎是關於sin/cos(而不是矩形笛卡爾形式)的座標,因爲你有需要0和45的條件,這讓我認爲你正在談論角度,儘管我在這裏可能是錯的。請澄清,所以我可以編輯這個答案

size_t x_start = 40; 
size_t x_end = 70; 

size_t counter = x_start; 
bool line_broken_x = false; 

while (line_broken_x != false && counter != x_end+1) 
{ 
    if(pdX[counter] < 0 || pdX[counter] > 45) 
     line_broken_x = false; 

    counter++; 
} 

if (line_broken_x == true) 
    cout << "My line is broken in the X axis" << endl; 
else 
    cout << "My line is not broken in the X axis" << endl;