配列変数に格納されているデータの順序を逆に変更するプログラムを実行してみよう💖💖

ソーラー「


今日は


          配列とfor文を用いて



    配列変数に格納されているデータの順序を逆に変更するプログラムを実行してみたいと思います。



まずは


次のプログラムをご覧ください


👇


#include <stdio.h>


int main(void) {


int hairetu[5];


int a = 0;


for (a = 0; a < 5; a++) {


hairetu[a] = a;


printf("%d", hairetu[a]);

}

/*👆

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

を初期化すると同時に配列変数に格納された数値

0

1

2

3

4

printf出力表示するようにしています*/

printf("\n");

//🌞改行しています

return 0;

}


ビルド実行結果


01234


ソーラー「


このプログラムでは


ビルド実行結果は


01234


となっています。



配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

数値

0

1

2

3

4

が代入されているのがわかるね。


この状態から


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

格納されている数値を

順序を逆に


4

3

2

1

0

いれかえて


ビルド実行結果


43210


が表示されるようにしたいと思います。」


アレサ「どうしたら


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

格納されている数値を

0

1

2

3

4

から

4

3

2

1

0

順序を逆に入れ替えるかが


ポイントになりそうですね」



_______________________

実は


4から


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

格納されている数値

0

1

2

3

4

を引くと

4

3

2

1

0

になります


つまり


4から


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]



4-hairetu[0]

4-hairetu[1]

4-hairetu[2]

4-hairetu[3]

4-hairetu[4]


のように引くと


4

3

2

1

0


がえられます。


あとは


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

4-hairetu[0]

4-hairetu[1]

4-hairetu[2]

4-hairetu[3]

4-hairetu[4]

hairetu[0] = 4-hairetu[0];

hairetu[1] = 4-hairetu[1];

hairetu[2] = 4-hairetu[2];

hairetu[3] = 4-hairetu[3];

hairetu[4] = 4-hairetu[4];


を代入する


すなわち


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

4

3

2

1

0


を代入して


for (a = 0; a < 5; a++) {


printf("%d", hairetu[a]);


}



実行すれば


ビルド実行結果に


43210


を表示させることができます


            solarplexussより


おっと ソーラーたちには このことは ひ・み・つ💖だよ

_______________________


ソーラー「そうなんだよ。


まずは


いきなりですが


次のプログラムをご覧ください


#include <stdio.h>


int main(void) {


int hairetu[5];


int a = 0;


for (a = 0; a < 5; a++) {


hairetu[a] = a;


printf("%d", hairetu[a]);

}

/*👆

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

を初期化すると同時に配列変数に格納された数値

0

1

2

3

4

printf出力表示するようにしています*/


printf("\n");

//🌞改行しています


hairetu[0] = 4-hairetu[0];

hairetu[1] = 4-hairetu[1];

hairetu[2] = 4-hairetu[2];

hairetu[3] = 4-hairetu[3];

hairetu[4] = 4-hairetu[4];


/*🌞配列変数に格納されている数値を順序を逆に入れ替えました。


for (a = 0; a < 5; a++) {


printf("%d", hairetu[a]);


}


printf("\n");

//🌞改行しています


return 0;

}



ビルド実行結果


01234

43210


アレサ「とても上手に


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

に格納されている数値が


0

1

2

3

4

から

4

3

2

1

0


に変更されています



これはどのような仕組みになっているのですか?(´▽`*)」


ソーラー「ははっ


ここの仕組みがどうなっているかだよね。



           それは勘だよ




( ̄∇ ̄;)ハッハッハ


ではなく


簡単、簡単


ビルド実行結果

01234

から

43210

に変更したいのだったね。


そこで


01234

43210


01234

43210


のようにくっつけて

並べて

よく見ると


上の段と下の段の数値を足したものは


0+4=4

1+3=4

2+2=4

3+1=4

4+0=4


の計算結果をみてもわかるように


すべて合計値が🌷4🌸になっています。


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]


に格納されている数値が

0

1

2

3

4

だとすると


4から


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

格納されている数値

0

1

2

3

4

を引くと

4

3

2

1

0

がえられるってわけさ(^_-)-☆


つまり


4から


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]



4-hairetu[0]

4-hairetu[1]

4-hairetu[2]

4-hairetu[3]

4-hairetu[4]


のように引くと


4

3

2

1

0


がえられるというわけなんだね。


あとは


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

4-hairetu[0]

4-hairetu[1]

4-hairetu[2]

4-hairetu[3]

4-hairetu[4]

hairetu[0] = 4-hairetu[0];

hairetu[1] = 4-hairetu[1];

hairetu[2] = 4-hairetu[2];

hairetu[3] = 4-hairetu[3];

hairetu[4] = 4-hairetu[4];


のように代入する


つまり


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

4

3

2

1

0


を代入して


for (a = 0; a < 5; a++) {


printf("%d", hairetu[a]);


}



実行すれば


ビルド実行結果に


43210


を表示させることができるというわけなんだ」


アレサ「美しい仕組みになっているのですの。」


ソーラー「今のプログラムの中の


hairetu[0] = 4-hairetu[0];

hairetu[1] = 4-hairetu[1];

hairetu[2] = 4-hairetu[2];

hairetu[3] = 4-hairetu[3];

hairetu[4] = 4-hairetu[4];


の部分を


配列とfor文を用いて


int i;


for (i = 0; i < 5; i++) {


hairetu[i] = 4-hairetu[i];

}



短くかきかえることができます。


書き換えた


プログラムも実行してみようかな


#include <stdio.h>


int main(void) {


int hairetu[5];


int a = 0;


for (a = 0; a < 5; a++) {


hairetu[a] = a;


printf("%d", hairetu[a]);

}

/*👆

配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

を初期化すると同時に配列変数に格納された数値

0

1

2

3

4

printf出力表示するようにしています*/


printf("\n");

//🌞改行しています

int i;



for (i = 0; i < 5; i++) {


hairetu[i] = 4 - hairetu[i];

}


for (a = 0; a < 5; a++) {


printf("%d", hairetu[a]);


}


printf("\n");

//🌞改行しています


return 0;

}



ビルド実行結果


01234

43210



ソーラー「よく考えたら


これは


すごいことだよね。


もし


配列変数が

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

hairetu[9998]

hairetu[9999]

と10000個あり


hairetu[0]=0;

hairetu[1]=1;

hairetu[2]=2;

hairetu[3]=3;

hairetu[4]=4;

hairetu[9998]=9998;

hairetu[9999]=9999;


と数値

0

1

2

3

4

9998

9999


が代入されていたとしても


for (i = 0; i < 10000; i++) {


hairetu[i] = 9999-hairetu[i];

}


を実行することにより


簡単に


hairetu[0]=9999;

hairetu[1]=9998;

hairetu[2]=9997;

hairetu[3]=9996;

hairetu[4]=9995;

hairetu[9998]=1;

hairetu[9999]=0;


を実行して


配列変数

hairetu[0]

hairetu[1]

hairetu[2]

hairetu[3]

hairetu[4]

hairetu[9998]

hairetu[9999]



0

1

2

3

4

9998

9999


と数値が代入されている状態から


順序を逆に入れ替えて


9999

9998

9997

9996

9995

3

2

1


数値を代入することができるからね。」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます