2016-09-10 3 views
0
#include <iostream> 
using namespace std; 
int main() 
{ 
    int myArray [5] = {10, 20, 30, 40, 50}; 
    for(int count = 0; count < 5; count++) 
    { 
     myArray[count] = myArray[4-count]; 
    } 

    for(int Count = 0; Count < 5; Count++) 
    { 
     cout<<myArray[Count]<<endl; 
    } 
} 

出力は50,40,30,20,10の代わりに50,40,30,40,50です。このプログラムのロジックに何が間違っているのでしょうか?御時間ありがとうございます!なぜプログラムによってアレイの値が正しく逆転しないのですか?

+4

あなたのプログラムが何をしているのかを段階的に書き留めてみてください。 –

+0

私はそれを行うでしょう..チップのおかげで。 –

+0

あなたは要素を交換していません。前半は大丈夫ですが、最後の半分、あなたは前のコピーをコピーします。新しい価値。 2番目の新しい配列を使用するか、配列要素の半分までスワップを適用する –

答えて

2

のは、一度にコード一回の反復の上に行こう:

myArray [5] = {10, 20, 30, 40, 50}; 

第一反復:

myArray [5] = {50, 20, 30, 40, 50}; 

第二の繰り返し:

myArray [5] = {50, 40, 30, 40, 50}; 

第三反復:

myArray [5] = {50, 40, 30, 40, 50}; 

第4回反復:

myArray [5] = {50, 40, 30, 40, 50}; 

第5回反復:

myArray [5] = {50, 40, 30, 40, 50}; 

が期待通りに動作させるためには、値がそれらを上書きするの主張交換するループを変更します。以下のような:

for (i = 0; i < 2; ++i) { 
    tmp = arr[4-i]; 
    myArray[4-i] = myArray[i]; 
    myArray[i] = tmp; 
} 
+0

これは意味があります。あなたのお時間をありがとう! –

0

あなたは、このように継続的に最初に提供配列を変え、その結果、変更された値にアクセスして、配列in-placeを変更しているので。

アレイを逆転できるようにするには、最初に完全な逆転処理が終了するまで、値を失ってはいけません。

+0

ありがとうございました! –

関連する問題