2016-03-25 39 views
0

配列を指定すると、最小値が最初、最大値が2番目、最小値が2番目に小さいように並べ替えるように求められました。しかし、私が値を入力すると、私は必要な出力を得ることができません。配列の最小値と最大値を並べ替える

今日は試験があるので、アドバイスをいただければ幸いです。

#include<stdio.h> 
int main() 

{ 
    int i,j,k,a[6],temp,min; 
    for(i=0;i<6;i++) 
    scanf("%d",&a[i]); 

    for(j=0;j<6;j++) 
    { 
     if(j%2==0) 
     { 
      min=a[j]; 
      for(k=j;k<6;k++) 
      { 
       if(a[k++]<min) 
       min=a[k++]; 
      } 

      temp=a[j]; 
      a[j]=min; 
      min=temp; 
     } 
     else 
     { 
      min=a[j]; 
      for(k=j;k<6;k++) 
      { 
       if(a[k++]>min) 
       min=a[k++]; 
      } 

      temp=a[j]; 
      a[j]=min; 
      min=temp; 
     } 
     printf("%d ",a[j]); 
    } 
} 
+0

ありがとうございました、その質問は私を助けてくれましたが、私のコードが正しくない理由を知りたいのですが。 –

+1

これはまだ与えられているようにトピック外です。学ぶ[尋ねる]。そして、デバッガを使用してください。 – Olaf

答えて

0

minこのようにインデックス(min=j)の代わりに、値(min=a[j]

として使用されている:それはおそらく重複しますが、

min=j; 
for(k=j;k<6;k++) 
{ 
    if(a[k]<a[min]){//if(a[k]>a[min]){ 
     min=k; 
    } 
} 

temp=a[j]; 
a[j]=a[min]; 
a[min]=temp; 
0

あなたのためにいくつかのアドバイス。配列のインデックスを作成するときにk++を呼び出すと、ループを終了しなくても常にkが増えます。したがって、for(k.....)ループは他のすべての配列要素を渡すことはありません。

関連する問題