2016-05-01 6 views
2

ユーザーの入力は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]の場合に共通の違いがあると考えていました。しかし、その後の数字は、私はそれは私に32767を与えsequence_difference印刷しようとすると[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); 
} 

間の共通の違いをtheresの例4 5 12 13 16 20 27 28のためのものであるならば、それは仕事をdoesnt ...誰が助けることはできますか?

+0

コードを正しくフォーマットすることをお勧めします。 – MikeCAT

+0

うん、それについて申し訳ありません – hsc4lyf

+0

まだフォーマットが悪いですか? – hsc4lyf

答えて

1

まず、要件をクリアするか、提供された入力と必要な出力を指定する必要があります。 が、あなたのコードを見て私はあなたがこれを行わない場合は、最後のパスでiがn超えることになるのため、内側のループは回反復1のn-しなければならない

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; 
     } 
    } 
} 

を把握することができます多くのミスがあります。 次のエラーはあなたのwhileループにあります。これは、forループのために値nを持つiを使用しています。 これらの間違いを見てみてください。 詳細についてはcan check

+0

申し訳ありません、申し訳ありませんが、私のプログラムのコードを修正してくれました。ありがとうございます!ユーザーの入力は7 10 12 14 16 20 25となります。出力は、差がすべて同じ昇順の数値のセットになります。したがって、この場合は、12,25,7,20または10,14,16,20となります。両者の違いが同じであることに注意してください。私はこれをどのようにして行うのですか? – hsc4lyf

関連する問題