プロが教える店舗&オフィスのセキュリティ対策術

配列の中で入れ換えをして逆順にする方法

大学の課題で出たもので、10個以下の数を読み込んで逆順に書くプログラムなんですけど
別の配列を宣言せずに配列の中身を入れ替えて逆順にする方法を教えてください
ここに処理を入力 のところの配列の中身を逆転するプログラムはどうしたらいいんでしょうか?


class Reverse {
public static void main(String [] args){
int data[] = new int[10];
int i,x,kosuu;
i=0;
x=IO.in.readInt();
while(x >= 0){
if(i>=10) System.out.println("10個を越えたので無視する。");
else { data[i]=x; i++; }
System.out.print("> ");
x=IO.in.readInt();
}
kosuu=i;


ここに処理を入力


System.out.println("数列を逆順に書くと以下の通り。");
for(i=0;i<kosuu;i++){System.out.println(data[i]);}
}
}

A 回答 (2件)

こちらのURLが参考になります。



参考URL:http://oshiete.goo.ne.jp/qa/4529822.html
    • good
    • 0

入力された kosuu=10 の場合


tmp に data[0] の内容を入れて、
data[0] に data[9] の内容を入れて、
data[9] に tmp の内容を入れる。
で、data[0] と data[9] の中身が入れ替わる

kosuu = 10 の時
データは、 data[0] から data[9] 迄ある訳だから
入替は、↓になる
tmp = data[0]; data[0] = data[9]; data[9] = tmp;
tmp = data[1]; data[1] = data[8]; data[8] = tmp;
tmp = data[2]; data[2] = data[7]; data[7] = tmp;
tmp = data[3]; data[3] = data[6]; data[6] = tmp;
tmp = data[4]; data[4] = data[5]; data[5] = tmp;


kosuu = 9 の時
データは、 data[0] から data[8] 迄ある訳だから
入替は、↓になる
tmp = data[0]; data[0] = data[8]; data[8] = tmp;
tmp = data[1]; data[1] = data[7]; data[7] = tmp;
tmp = data[2]; data[2] = data[6]; data[6] = tmp;
tmp = data[3]; data[3] = data[5]; data[5] = tmp;
tmp = data[4]; data[4] = data[4]; data[4] = tmp;
最後の data[4] と data[4] の入替は意味が無い

つまり、0→1→2 となる変数と
つまり、9→8→7 となる変数があるとして
数値の大きさが、逆転する(又は=になる)迄
繰り返せば良い事がわかる
    • good
    • 0

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