配列変数の中に適当に格納されている数値を最も大きな数値から順に配列変数に入れ替えるプログラムを実行してみよう。 その2💖💖💖
つ・づ・き😊です
先ほどは
配列宣言
int hairetu[5];
により
生成される
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に
hairetu[0]に格納されている数値は0
hairetu[1]に格納されている数値は1
hairetu[2]に格納されている数値は2
hairetu[3]に格納されている数値は3
hairetu[4]に格納されている数値は4
と数値が代入されている状態から
hairetu[0]に格納されている数値は4
hairetu[1]に格納されている数値は3
hairetu[2]に格納されている数値は2
hairetu[3]に格納されている数値は1
hairetu[4]に格納されている数値は0
と数値が代入されている状態に入れ替えるために
4つのプログラムを実行しました
まずは
1つ目のプログラムを実行することにより→
👇
#include <stdio.h>
int main(void) {
int hairetu[5];
hairetu[0] = 0;
hairetu[1] = 1;
hairetu[2] = 2;
hairetu[3] = 3;
hairetu[4] = 4;
int i;
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
//🌞改行しています
int k;
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
return 0;
}
ビルド実行結果
01234
10234
12034
12304
12340
ソーラー「→(´▽`*)
配列変数 hairetu[0]に格納されている数値は0
配列変数 hairetu[1]に格納されている数値は1
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は3
配列変数 hairetu[4]に格納されている数値は4
と数値が格納されている状態から
配列変数 hairetu[0]に格納されている数値は1
配列変数 hairetu[1]に格納されている数値は2
配列変数 hairetu[2]に格納されている数値は3
配列変数 hairetu[3]に格納されている数値は4
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態へ
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に格納されている数値を入れ替えることができました
(😊チョコっと解説
01234
は
配列変数 hairetu[0]に格納されている数値は0
配列変数 hairetu[1]に格納されている数値は1
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は3
配列変数 hairetu[4]に格納されている数値は4
を表しています😊)
次に
このように
配列変数 hairetu[0]に格納されている数値は1
配列変数 hairetu[1]に格納されている数値は2
配列変数 hairetu[2]に格納されている数値は3
配列変数 hairetu[3]に格納されている数値は4
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態で
今のと同じ
2回目のプログラムを実行すると
#include <stdio.h>
int main(void) {
int hairetu[5];
hairetu[0] = 1;
hairetu[1] = 2;
hairetu[2] = 3;
hairetu[3] = 4;
hairetu[4] = 0;
int i;
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
//🌞改行しています
int k;
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
}
ビルド実行結果
12340
21340
23140
23410
23410
ソーラー「ビルド実行結果を見てもお分かりになられますように
今度は
配列変数 hairetu[0]に格納されている数値は1
配列変数 hairetu[1]に格納されている数値は2
配列変数 hairetu[2]に格納されている数値は3
配列変数 hairetu[3]に格納されている数値は4
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態から
配列変数 hairetu[0]に格納されている数値は2
配列変数 hairetu[1]に格納されている数値は3
配列変数 hairetu[2]に格納されている数値は4
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態へ
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に格納されている数値が入れ替わっているのが観察できます
次に
配列変数 hairetu[0]に格納されている数値は2
配列変数 hairetu[1]に格納されている数値は3
配列変数 hairetu[2]に格納されている数値は4
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態で
3回目となる今と同じプログラムを実行すると
#include <stdio.h>
int main(void) {
int hairetu[5];
hairetu[0] = 2;
hairetu[1] = 3;
hairetu[2] = 4;
hairetu[3] = 1;
hairetu[4] = 0;
int i;
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
//🌞改行しています
int k;
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
}
ビルド実行結果
23410
32410
34210
34210
34210
ソーラー「ビルド実行結果を見てもお分かりになられますように
今度は
配列変数 hairetu[0]に格納されている数値は2
配列変数 hairetu[1]に格納されている数値は3
配列変数 hairetu[2]に格納されている数値は4
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態から
配列変数 hairetu[0]に格納されている数値は3
配列変数 hairetu[1]に格納されている数値は4
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態へ
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に格納されている数値が
入れ替っているのが観察できます。
次に
配列変数 hairetu[0]に格納されている数値は3
配列変数 hairetu[1]に格納されている数値は4
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態で
今のと同じ4回目のプログラムを実行すると
#include <stdio.h>
int main(void) {
int hairetu[5];
hairetu[0] = 3;
hairetu[1] = 4;
hairetu[2] = 2;
hairetu[3] = 1;
hairetu[4] = 0;
int i;
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
//🌞改行しています
int k;
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
}
ビルド実行結果
34210
43210
43210
43210
43210
ソーラー「このビルド実行結果を見てもお分かりになられますように
今度は
配列変数 hairetu[0]に格納されている数値は3
配列変数 hairetu[1]に格納されている数値は4
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態から
配列変数 hairetu[0]に格納されている数値は4
配列変数 hairetu[1]に格納されている数値は3
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態へ
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に格納されている数値が
入れかわっているのが観察できます
今までの流れが
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に
配列変数 hairetu[0]に格納されている数値は0
配列変数 hairetu[1]に格納されている数値は1
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は3
配列変数 hairetu[4]に格納されている数値は4
と数値が格納されている状態から
配列変数 hairetu[0]に格納されている数値は4
配列変数 hairetu[1]に格納されている数値は3
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態へ
格納されている数値を
大きな値から順に
並べ替える基本的な手順となっています。
1回目から4回目のプログラムの実行結果を
まとめて表示すると
1回目
01234
10234
12034
12304
12340
2回目
12340
21340
23140
23410
23410
3回目
23410
32410
34210
34210
34210
4回目
34210
43210/*
この時点で01234から43210に数値を入れ替えることに成功しました*/
43210
43210
43210
となっています。」
ソーラー「結局
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に
配列変数 hairetu[0]に格納されている数値は0
配列変数 hairetu[1]に格納されている数値は1
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は3
配列変数 hairetu[4]に格納されている数値は4
と数値が格納されている状態から
配列変数 hairetu[0]に格納されている数値は4
配列変数 hairetu[1]に格納されている数値は3
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と数値が格納されている状態へ
数値を入れ替えるには
4回
以下の命令文を繰り返すと
👇
int i;
int k;
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
ソーラー「→良いわけなんだね。
というわけで
今までの4つのプログラムの実行結果を観察することにより
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に
配列変数 hairetu[0]に格納されている数値は0
配列変数 hairetu[1]に格納されている数値は1
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は3
配列変数 hairetu[4]に格納されている数値は4
と数値が格納されている状態から
配列変数 hairetu[0]に格納されている数値は4
配列変数 hairetu[1]に格納されている数値は3
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と
数値が格納されている状態に
入れ替えるプログラムは
いままでの4つのプログラムをまとめることにより
次のようになります。
#include <stdio.h>
int main(void) {
int hairetu[5];
hairetu[0] = 1;
hairetu[1] = 2;
hairetu[2] = 3;
hairetu[3] = 4;
hairetu[4] = 0;
int i;
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
//🌞改行しています
int k;
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
//🌞👆1回目です
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
//🌞👆2回目です
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
//🌞👆3回目です
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
//🌞👆4回目です
return 0;
}
ビルド実行結果
01234
10234
12034
12304
12340
21340
23140
23410
23410
32410
34210
34210
34210
43210👈01234から43210に数値を入れ替えることに成功しました
43210
43210
43210
アレサ「ついに
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に
配列変数 hairetu[0]に格納されている数値は0
配列変数 hairetu[1]に格納されている数値は1
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は3
配列変数 hairetu[4]に格納されている数値は4
と数値が格納されている状態から
配列変数 hairetu[0]に格納されている数値は4
配列変数 hairetu[1]に格納されている数値は3
配列変数 hairetu[2]に格納されている数値は2
配列変数 hairetu[3]に格納されている数値は1
配列変数 hairetu[4]に格納されている数値は0
と
数値が格納されている状態に
入れ替えるプログラムが完成したんですの」
ソーラー「これは プロトタイプといったところかな?」
ソーラー「このプログラムでは
for (k = 0; k< 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i< 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
が4回繰り返されている部分があるね。
この部分を
for文を用いて短くまとめてプログラムを書き換えると
#include <stdio.h>
int main(void) {
int hairetu[5];
hairetu[0] = 0;
hairetu[1] = 1;
hairetu[2] = 2;
hairetu[3] = 3;
hairetu[4] = 4;
int i;
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
//🌞改行しています
int n;
for (n = 1; n < 5; n++) {
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
}
return 0;
}
ビルド実行結果
01234
10234
12034
12304
12340
21340
23140
23410
23410
32410
34210
34210
34210
43210👈01234から43210に数値を入れ替えることに成功しました
43210
43210
43210
ソーラー「となりますが
こちらのプログラムを
用いることはないんだ😊」
アレサ「?短くプログラムが記述できているのに
なぜなのですの?」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます