2016-05-01 32 views
2

可以說用戶輸入是7 10 12 14 16 20 25.我希望輸出是一組按照升序排列的數字,它們的區別完全相同。所以對於這種情況,它將是:12,25,7,20或10,14,16,20。請注意,在這兩種情況下,它們的差異是相同的,輸出中至少有4個數字。我該怎麼做呢?如何查找數組中的整數是否有共同的區別?

我在試圖找出數組中的整數是否有共同的區別。我首先想到按照升序對它們進行排序會更好,然後如果它們有一個共同的區別。但後來它不工作,如果數字是例如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 ......誰能幫之間的共同區別?

+0

我建議你應該適當地格式化你的代碼。 – MikeCAT

+0

是的,對不起, – hsc4lyf

+0

格式化仍然不好? – hsc4lyf

回答

1

首先,您應該清除需求或指定所需的輸入和輸出。 但看到你的代碼有很多錯誤,我可以找出

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 for循環的上層。所以試着看看這些錯誤。 欲瞭解更多信息can check

+0

好的抱歉,在我的程序中修復了代碼,謝謝!可以說用戶輸入是7 10 12 14 16 20 25.我希望輸出是一組數字,按升序排列,它們的差別都是一樣的。所以對於這種情況,它將是:12,25,7,20或10,14,16,20。請注意,在這兩種情況下,它們的區別是相同的。我該怎麼做呢? – hsc4lyf

相關問題