teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

[追記2]

2019/10/19 07:27

投稿

BeatStar
BeatStar

スコア4962

answer CHANGED
@@ -78,6 +78,7 @@
78
78
 
79
79
  ```C
80
80
  int isFulfilledCondition( int high[], size_t sizeofHigh, int label1Buffer[], sizeofLabel1Buffer ){
81
+ int i;
81
82
  // 0から sizeofHigh までループ ( つまり highの個数分チェック )
82
83
  for( i = 0; i < sizeofHigh; i++ ){
83
84
  // 一個でも条件に該当しないのがあるなら"条件を満たしていない"とする
@@ -96,4 +97,57 @@
96
97
  - (関数に渡すデータが配列のとき)
97
98
  - if文
98
99
 
99
- の項目は必須です。(今回の場合)
100
+ の項目は必須です。(今回の場合)
101
+
102
+ ---
103
+
104
+ [追記2]
105
+
106
+ kazuma-sさんとのやり取りで
107
+
108
+ > この構文だとhigh[]やLabelBuffer[]の1~9までがif文の中にないようにみえるのですが、対象として扱われているのでしょうか?
109
+
110
+ とありますが、「ちゃんと扱われています」です。
111
+
112
+ kazuma-sさんのコードでは while内で j++ とされています。
113
+
114
+ これによって forでの 三番目のアレ ( i++ ) みたいな状態と一応同じです。
115
+
116
+ 「配列」「while」「for」「変数」...そういう基礎が分かっていればわかる内容ですよ。
117
+
118
+ また、コードがなぜそういう風になっているのかを考えるときは、「一行レベルでコメントをつける」のを癖付けるのが望ましいかと。
119
+
120
+ ```C
121
+ // バブルソートの場合
122
+
123
+ // 変数宣言
124
+ int i, j, work;
125
+
126
+ // 対象
127
+ int arr[4] = { 2, 4, 1, 9 };
128
+
129
+ // arrの最初から最後まで検索するため?
130
+ for( i = 0; i < 4; i++ ){
131
+ // えーっと、後ろから検索してんのかな...?
132
+ for( j = 4 - 1; j > i; j-- ){
133
+ // 昇順になっていないなら?
134
+       if( arr[j] < arr[j-1] ){
135
+ // 入れ替え...なのかな?
136
+ work = arr[j];
137
+ arr[j] = arr[j-1];
138
+ arr[j-1] = work;
139
+ }
140
+ }
141
+ }
142
+ ```
143
+
144
+ っていう風に「その行が何をしているのか」を考えながらコメントをつけて考えてみるとか、名前は忘れました(趣味でやっているので)が、〇〇シート だった気がしますが、変数の値がどのように変化していっているのか、またif文での条件式を満たす・満たさないとかの「流れを考える」ためのものがあった気がします。
145
+ そういうのを使ってみる。
146
+
147
+ |変数a|変数b|if|
148
+ |:--|:--:|--:|
149
+ |a = 10|b = 20||
150
+ |a + b = 10 + 20 = 30|b = 20||
151
+ |a = 30|b = 20|a > 11 で条件を満たす|
152
+
153
+ みたいな書き方だった気が...

1

追記1

2019/10/19 07:27

投稿

BeatStar
BeatStar

スコア4962

answer CHANGED
@@ -64,4 +64,36 @@
64
64
 
65
65
  こういう風に関数にしてまとめたりするだけでもスタイリッシュになりますよ。
66
66
 
67
- もし関数がわからないのであれば入門書(サイトでもいい)を読んでください。
67
+ もし関数がわからないのであれば入門書(サイトでもいい)を読んでください。
68
+
69
+ ---
70
+
71
+ [追記1]
72
+
73
+ > 過去にVBAやGASなどを少しかじったことがあったので、for文くらいならすぐ理解できるかと思ったのですが、せっかく回答いただいた内容が少し調べたくらいでは全く理解できませんでした…。
74
+
75
+ えーっと、そういう基礎的なものは入門書を読んでください。
76
+
77
+ 一応、サンプル程度のものを載せておきます。
78
+
79
+ ```C
80
+ int isFulfilledCondition( int high[], size_t sizeofHigh, int label1Buffer[], sizeofLabel1Buffer ){
81
+ // 0から sizeofHigh までループ ( つまり highの個数分チェック )
82
+ for( i = 0; i < sizeofHigh; i++ ){
83
+ // 一個でも条件に該当しないのがあるなら"条件を満たしていない"とする
84
+ if( high[i] != label1Buffer[i] ) return 0;
85
+ }
86
+ // ここまで来たらすべての条件が満たされているとする
87
+ return 1;
88
+ }
89
+ ```
90
+
91
+ 少なくとも
92
+
93
+ - 配列
94
+ - for文
95
+ - (自作)関数
96
+ - (関数に渡すデータが配列のとき)
97
+ - if文
98
+
99
+ の項目は必須です。(今回の場合)