• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 逆順の配列の仕方を教えてください)

C言語で配列の逆順を実現する方法とは?

このQ&Aのポイント
  • C言語の課題として配列の逆順を求める方法について説明します。
  • 配列の逆順にするためのプログラムの書き方を解説します。
  • for文を使用して配列の逆順を実現する方法を詳しく説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.4

>元ソースの下部にある「 /* ここに処理を書く */」のとこだけしか記述できません。 まさにその位置へ、皆さんのヒントを実装するんです。 void reverse_num( int *num, int len ) { } ↑大前提。これが「関数」というものですが分かりますか? これの呼び出し元を参照すると >reverse_num( num1, 10 ); となっています。 num1とはなんぞや、というと >int num1[10]={2,4,9,10,5,3,1,7,8,6}; 以上からreverse_num()に渡す第1引数(型: int*)には&num1[0]、 次の引数lenには要素数が渡されることになりますね。 reverse_num関数に入った直後は、 num + len が、ラストの次の要素を指すことになります。 これでもう分かりますね。仕上げはご自分で頑張って下さい。

becks09
質問者

お礼

ありがとうございます。 とにかく、みなさまのアドバイスをもとに やってみます。 ありがとうございました。

その他の回答 (4)

  • yama5140
  • ベストアンサー率54% (136/250)
回答No.5

★身の回りのものに置き換えて考えると・・。  ・2個のコップがあって、    1つにビール、    もう1つに日本酒 が入っている。        これらを入れ替えたいとき、      もうひとつ、空の一時待避用の『容器1つ』が必要ですよね。      その容器に一旦、ビールを入れて、    空いたコップに、日本酒を入れる。    空いたコップに、待避したビールを入れる。 ----------------------------------------------------- ★これをコードにして「所定位置」に入れる。    ヒント:データ数の奇数偶数は考えなくても・・。    「コロンブスの卵」かもしれないけど、すごく簡単。 >for文でプログラムを書くのと、・・   → 先生は、次に「ソート」(参考URL等)を・・。 --------------------------------------------------------- ちなみに、「課題」を無視すれば、  reverse_num() 関数は不要で、print_num() 関数だけで、  (正逆のスイッチを引数で渡す)実現できます。   ↑これじゃあ、「学習」にならん。

参考URL:
http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/
回答No.3

配列 int num[N] と int i, j があるとき、 num[i] と num[j] の内容を入れ替えるコードは書けますか? これができれば簡単: int i = 0; int j = 配列の最大添え字; while ( i < j ) {   num[i] と num[j] を交換する。   i++;   j--; }

becks09
質問者

補足

>入れ替えるコードは書けますか? 申し訳ありません。書けないです。 さらに条件というのがありまして、 for文でプログラムを書くのと、元ソースの下部にある「 /* ここに処理を書く */」のとこだけしか記述できません。 元ソースをいじってはいけないというのが条件です。 すいません、表記してなかったですね。

noname#58357
noname#58357
回答No.2

print_numだったら、 0,1,--,9 のところを 9,8,--0 ですね。 for( i=0; i<len; i++ ) を for( i=len-1; i>=0; i-- ) に変更

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> 逆順になるにはどのようなプログラム ヒントを差し上げます。 先頭の要素と最後の要素を入れ替えます。 先頭の次の要素と最後の前の要素を入れ替えます。 ... 以下同様に、要素数の半分の回数だけ繰り返します。 本当にこれでよいかどうか、まずは手でやってみてください。 正しいことが確認できたら、C言語のコードで表現してみてください。

becks09
質問者

補足

ヒントいただき誠にありがたいのですが、元ソースを触ってはいけないというのを表記するのを忘れていました。 大変申し訳ありません。 ソースの下部の「 /* ここに処理を書く */」のとこにプログラムを書くというのが条件になっています。