如何用C ++中的while while循环中的计数器跟踪错误?

时间:2015-09-24 03:21:17

标签: c++ while-loop do-while

我试图让我用数字读取数组并获得较小的数字,将其存储在变量中,然后将其与另一个来自其他两个数字(如2,-3)的变量进行比较。

我实现do while循环的方式有问题。我需要柜台'我'要更新两次以便它通过我有4个比较数字的2个新变量。当我硬编码n-1时,n-2它可以工作,但是在循环中它会卡在一个值上。

int i=0;
        int closestDistance=0;
        int distance=0;
        int nextDistance=0;
        do
        {
            distance = std::min(values[n],values[n-i]);  //returns the largest
            distance=abs(distance);
            i++;
            nextDistance=std::min(values[n],values[n-i]);
            nextDistance=abs(closestDistance); //make it positive then comp
            if(distance<nextDistance)
                closestDistance=distance;//+temp;
            else
                closestDistance=nextDistance;
            i++;
        }
        while(i<n);
        return closestDistance;

2 个答案:

答案 0 :(得分:0)

你想在以下几行做什么。
nextDistance=std::min(values[n],values[n-i]); nextDistance=abs(closestDistance); //make it positive , then computed

答案 1 :(得分:0)

也许这个:

int i = 0;
int m = 0;
do{
  int lMin = std::min(values[i],values[i + 1]);
  i += 2;
  int rMin = std::min(values[i], values[i + 1]);
  m = std::min(lMin,rMin);
  i += 2;
}while(i < n);
return m;

我不明白你的意思,但是这会一次比较values 4中的值来找到最小值。这就是你所需要的吗?

请注意,如果n是值的大小,则会超出范围。 n必须是大小减去4,导致奇怪的异常情况。

您的问题可能出在abs的电话中。所有价值观都是积极的吗?你想找到最小的绝对值吗?

另请注意,使用i += 2两次可确保您不会重复任何值。这意味着您将获得4个唯一值。您的代码在循环的每次迭代中都会经过3次。

我希望这澄清了。