c-如何发现数组中的整数之间是否存在公共差异



假设用户输入是7 10 12 14 16 20 25。我希望输出是一组按升序排列的数字,其差值完全相同。因此,对于这种情况,它将是:12,25,7,20或10,14,16,20。请注意,在这两种情况下,它们的差异是相同的,并且输出中至少有4个数字。我该怎么做?

我试图找出数组中的整数之间是否有共同的差异。我最初认为最好按升序对它们进行排序,然后如果是sorted_array[1] - sorted_array[0] = sorted_array[2] - sorted_array[1],则有一个共同的区别。但是,如果数字是例如4 5 12 13 16 20 27 28,则它不起作用,其中[12,5], [20,13], [27,20] 之间存在共同差异

int r = 0; 
int l = 0; 
while (r < n) {
    if (arr_days4[r] - arr_days4[l] == arr_days4[r+1] - arr_days4[l+1]) {
        sequence_difference++;
        r++;
        i++;
    }
    else if(arr_days4[i] - arr_days4[r] > arr_days4[r + 1] - arr_days4[l+1]){
        l++;
    }
    else{
        r++;
    }
    printf("n%d", sequence_difference);
}

当我尝试打印sequence_difference时,它会给我32767…有人能帮忙吗?

首先,您应该清除需求或指定所提供的输入和所需的输出。但是看到你的代码有很多错误,我可以找出

for (i = 0; i < n; i++) {
    for (j = i + 1; j < n; j++) {
        if (array[i] > array[j]) {
            a = array[i];
            array[i] = array[j];
            array[j] = a;
        }
    }
}

内部循环必须迭代n-1次,因为如果不这样做,在最后一次循环中我将超过n。下一个错误是在while循环中,您使用了i,由于循环的上限值为n。所以试着看看这些错误。有关更多信息,您可以查看

相关内容

最新更新