配列変数に格納されているデータの順序を逆に変更するプログラムを実行してみよう💖💖
ソーラー「
今日は
配列と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
で
初期化すると同時に
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に格納された数値
0
1
2
3
4
を
printf出力表示するようにしています*/
printf("\n");
//🌞改行しています 01234の次の行に改行されています
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];
}
/*👆配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に格納されている数値を
0
1
2
3
4
から
4
3
2
1
0
に変更しています
*/
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]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
・
・
・
hairetu[9998]
hairetu[9999]
に
数値
0
1
2
3
4
・
・
・
9998
9999
が
hairetu[0]=0;
hairetu[1]=1;
hairetu[2]=2;
hairetu[3]=3;
hairetu[4]=4;
・
・
・
hairetu[9998]=9998;
hairetu[9999]=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
と
代入されている状態に変更することができるからね。」
ちょっとおまけのコーナーです🍪
今のプログラムの
以下の部分は
👇
for (i = 0; i < 5; i++) {
hairetu[i] = 4 - hairetu[i];
}
/*👆配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に格納されている数値を
0
1
2
3
4
から
4
3
2
1
0
に変更しています
*/
for (a = 0; a < 5; a++) {
printf("%d", hairetu[a]);
}
は
まとめて
for (i = 0; i < 5; i++) {
hairetu[i] = 4 - hairetu[i];
/*👆配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に格納されている数値を
0
1
2
3
4
から
4
3
2
1
0
に変更しています
*/
printf("%d", hairetu[i]);
}
と変更することができます
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます