0

私は自分の特定の時点で呼び出すこのvoid関数を持っていますmain()

void calc(int dim){

 int a[dim],i,j,temp;

 for(int i=0;i<dim;i++)
  {
   printf("\n\n Type a number - [%d/%d]: \t",i+1,dim);
   scanf("%d", &a[i]);       
  }

 for(i=0;i<dim;i++)
  {

   for(j=i+1;j<dim;j++) {

    if(a[i]==a[j])
    {
     continue;    
    }

    else
      {
       temp=a[i];
       a[i]=a[j];
       a[j]=temp;
       printf("%d", a[j]);
      }
    }
  }

  for(i=0;i<dim;i++)
   printf("%d", a[i]);
}

入力パラメータdimは配列の次元です。表示されているコードは、配列内の数値を並べ替えるため、完全に機能します。

ユーザーが入力番号として 4 5 8 7 5 を入力した場合、次のような出力が必要です。

if(a[i]==a[j])
    {
     continue;    
    }

ところで、出力はまだ 8 7 5 5 4 です。これを修正するにはどうすればよいですか?

4

2 に答える 2

-1

チェックされる前に番号を移動しています。それがあなたがそれを逃している理由です。最初にそれらを並べ替えてから、後で重複をチェックすることをお勧めします (現在 == 前)。たぶん、他のテクニックもうまくいくでしょう。

于 2013-07-25T16:34:38.427 に答える