歯ブラシ選びの大事なポイントとは?

演習B3-03で y=x[1]; x[1]=x[8]; x[8]=y;
y=x[2]; x[2]=x[7]; x[7]=y;
y=x[3]; x[3]=x[6]; x[6]=y;
y=x[4]; x[4]=x[5]; x[5]=y;
これをforループで表すにはどうすればいいか教えてください。

「プログラミングCについて質問します。」の質問画像

A 回答 (3件)

それが何を意図しているかを考えなさい。



配列内の要素x[1]~x[N-1]を逆順に並び替えたいのでしょう。
つまり:
x[1] と x[N-1] を交換
x[2] と x[N-2] を交換
...
この処理の終了条件は
x[i]とx[j]の交換においてi>=jになったとき
であるから:

int i, j;
for ( i = 1, j = N-1; i < j; ++i, --j ) {
 /* x[i]とx[j]を交換する
 y = x[i];
 x[i] = x[j];
 x[j] = y;
}
    • good
    • 0

添付画像は読めませんが…。



y=x[1]; x[1]=x[8]; x[8]=y;
y=x[2]; x[2]=x[7]; x[7]=y;
y=x[3]; x[3]=x[6]; x[6]=y;
y=x[4]; x[4]=x[5]; x[5]=y;

の部分については以下でよいでしょう。

for(i=1; i<5; i++){
y = x[i]; x[i]=x[9-i]; x[9-i]=y;
}
    • good
    • 0

添付の画像は潰れてて読めませんが…



>y=x[1]; x[1]=x[8]; x[8]=y;
>y=x[2]; x[2]=x[7]; x[7]=y;
>y=x[3]; x[3]=x[6]; x[6]=y;
>y=x[4]; x[4]=x[5]; x[5]=y;

どちらも規則正しく、1つ増えると1つ減る。なのですから、カウンタ用の変数使って処理できるでしょう。
# x[0]はどうなっているのか不明ですが…まぁ、そんなのはたいした問題ではないですな。
# 実用上は配列の添え字0番を意識していないと吹っ飛びかねませんが…。

ループの最初で1に設定した変数を用意し、4になるまで繰り返します。
x[上記の変数]で1回目はx[1]、2回目でx[2]が参照できます。
1回目で8、2回目で7…となるようにするのは算数の問題ですよね?
# 1回目に1、2回目に2…と遷移していく値を利用するだけですし。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング