2017-12-26 36 views
-3

整数の配列を入力して2組の値が等しいかどうかをチェックする方法と、同じ値を配列内に持つように複製したいのですか? 配列の最終結果を重複した値なしで出力したい。 は、私は心の中でこのようなものを持っている:Cで入力配列をチェックして同じ値をチェックする

int a[SIZE], i; 
printf("Enter %d numbers:\n", SIZE); 
for (i = 0; i < SIZE; i++) { 
    scanf_s("%d", a[i]); 
if(i>=1){ 
    if(a[i-1]==a[i]){ 
    a[i-1]==a[i]; 
    printf("%d", a[i-1]); 
} 
} 

この結果は、私は完全にする必要はありませんが、何を私に与えます。 これを手伝ってもらえますか?入力後

+0

'if(i == 1)' ...なぜですか? –

+0

私は毎回2つの値、1-2,2,3,3-4 etc..byを比較したいので、私が入力した1番目の値を比較して続けます。私がこれをやろうとしなければ、私は第二の価値と比較する最初の価値は持っていません。私はこれを行うことができます他のオプションは、私はいくつかの値の最初の数を格納する場合のみです。 –

+0

あなたはすべての数字を '1 '、すなわち' i == 1'と比較していますか? –

答えて

3

コード

#include<stdio.h> 
int main() { 
    int arr[20], i, j, k, size; 
    printf("\nEnter array size:"); 
    scanf("%d", &size); 
    printf("\nEnter Numbers:"); 
    for (i = 0; i < size; i++) 
     scanf("%d", &arr[i]); 
    printf("\nList of Unique Numbers:"); 
    for (i = 0; i < size; i++) { 
     for (j = i + 1; j < size;) { 
     if (arr[j] == arr[i]) { 
      for (k = j; k < size; k++) { 
       arr[k] = arr[k + 1]; 
      } 
      size--; 
     } else 
      j++; 
     } 
    } 
    for (i = 0; i < size; i++) { 
     printf("%d ", arr[i]); 
    } 
} 

説明

、我々は最初の要素から開始します。そのforループの中で、その要素の後の要素をチェックするためのforループがもう1つあります。重複がある場合は削除します。お役に立てれば!

+0

ありがとう、チェックされます!あまりにも多くのループが使用されている場合、それは効率に影響しますか?私はちょうど私がいくつかのばかげた質問=/ –

+2

はい、私はこれが最も知っている(少なくとも私が知っている)と信じている場合は申し訳ありませんCを勉強し始めている – QuIcKmAtHs

+1

@rivar_ plsチェックとソリューションとしてマーク。どうも – QuIcKmAtHs

関連する問題