0

特定の配列内の要素を逆にするために、次のコードを作成しました。

#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
    int numbers[6] = {1, 5, 9, 10, 12, 18};
    int b = 0;
    int a = 5;
    for (int i = 0; i < 3; ++i)
        {
            b = numbers[i];
            numbers[i] = numbers[a-i];
            numbers[a-i] = b;
        }
    for(int c = 0; c < 6; ++c)
        cout << *(numbers) << endl;

    return 0;
    }

18, 12, 10, 9, 5, 1 と表示されるはずですが、プログラムを実行すると 18, 18, 18, 18, 18, 18 と表示されます。最初の for ループ内の問題だと思います。ご協力いただきありがとうございます。

4

3 に答える 3

4

変化するcout << *(numbers) << endl;

cout << numbers[c] << endl;


さらに、ヘッダー ファイルの標準reverseアルゴリズムを使用します。<algorithm>

  std::reverse(numbers, numbers+6);
于 2013-03-03T12:57:31.880 に答える
2

これは 2 番目の for ループです。c を追加するのを忘れていました。

for(int c = 0; c < 6; ++c)
    cout << *(numbers + c) << endl;
于 2013-03-03T12:57:10.933 に答える
0

これを試すことができます:

for(int i = 0; i < ARRAY_SIZE; ++i) {
    //a^=b^=a^=b; //SWAP a with b
    numbers[i] ^= numbers[ARRAY_SIZE-i] ^= numbers[i] ^= numbers[ARRAY_SIZE-i];
}

配列内のすべての要素を逆にします。:)

于 2013-03-03T14:05:30.997 に答える