2017-12-17 8 views
0

私は自分でC++を教えています。ユーザーが入力したintを配列に渡し、配列をソートしてコンソールに吐き出すという方法を学びます。私は配列自体を渡してテストしましたが、それはうまくいきました。これは私のスワッピングコードです。配列をスワップ/ソートすると数字が複製されます

while(1){ 
     swapped = 0; 

     for(int i4 = 0; i4 < count; i4++){ 
      if(sdata[i4] > sdata[i4 + 1]){ 
       int temp = sdata[i4]; 
       sdata[i4] = sdata[i4 + 1]; 
       sdata[i4 + 1] = temp; 
       swapped = 1; 
      } 
     } 

     if(swapped == 0){ 
      break; 
     } 
    } 

これは実行時に返される値です。

How many numbers? 5 
[1] Please enter a value: 5 
[2] Please enter a value: 3 
[3] Please enter a value: 1 
[4] Please enter a value: 2 
[5] Please enter a value: 4 
Original numbers: 5 3 1 2 4 
Swapped numbers: 1 2 3 3 4 

私はちょうどスワップ自体をテストするために、新しいファイルにスワップを書き換えてみましたが、私はそれが何らかの理由で動作させることはできません。これを行うより良い方法はありますか?

+5

count'がアクセスし、sdata' 'のエントリの数であると仮定すると、' 'SDATA [I4 + 1]'未定義の動作をもたらす、配列の範囲外であります。 – 1201ProgramAlarm

答えて

0

あなたができることは、要素の配列内の最大値と最小値を入れ替える選択ソートです。ここ

コードである:

for(int i = 0; i<count-1; i++) 
    { 
    for(int j = i+1; j<count; j++) 
    { 
     if(sdata[i] > sdata[j]) 
     { 
      int temp = sdata[i]; 
      sdata[i] = sdata[j]; 
      sdata[j] = temp; 
     } 
    } 
    } 
関連する問題