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 个元素之间发生了什么?

4

2 回答 2

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;
        }
    }
}
于 2013-06-12T14:20:34.740 回答
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;
于 2013-06-12T14:32:24.103 回答