回答編集履歴

2

[追記2]

2019/10/19 07:27

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -158,6 +158,8 @@
158
158
 
159
159
  int isFulfilledCondition( int high[], size_t sizeofHigh, int label1Buffer[], sizeofLabel1Buffer ){
160
160
 
161
+ int i;
162
+
161
163
  // 0から sizeofHigh までループ ( つまり highの個数分チェック )
162
164
 
163
165
  for( i = 0; i < sizeofHigh; i++ ){
@@ -195,3 +197,109 @@
195
197
 
196
198
 
197
199
  の項目は必須です。(今回の場合)
200
+
201
+
202
+
203
+ ---
204
+
205
+
206
+
207
+ [追記2]
208
+
209
+
210
+
211
+ kazuma-sさんとのやり取りで
212
+
213
+
214
+
215
+ > この構文だとhigh[]やLabelBuffer[]の1~9までがif文の中にないようにみえるのですが、対象として扱われているのでしょうか?
216
+
217
+
218
+
219
+ とありますが、「ちゃんと扱われています」です。
220
+
221
+
222
+
223
+ kazuma-sさんのコードでは while内で j++ とされています。
224
+
225
+
226
+
227
+ これによって forでの 三番目のアレ ( i++ ) みたいな状態と一応同じです。
228
+
229
+
230
+
231
+ 「配列」「while」「for」「変数」...そういう基礎が分かっていればわかる内容ですよ。
232
+
233
+
234
+
235
+ また、コードがなぜそういう風になっているのかを考えるときは、「一行レベルでコメントをつける」のを癖付けるのが望ましいかと。
236
+
237
+
238
+
239
+ ```C
240
+
241
+ // バブルソートの場合
242
+
243
+
244
+
245
+ // 変数宣言
246
+
247
+ int i, j, work;
248
+
249
+
250
+
251
+ // 対象
252
+
253
+ int arr[4] = { 2, 4, 1, 9 };
254
+
255
+
256
+
257
+ // arrの最初から最後まで検索するため?
258
+
259
+ for( i = 0; i < 4; i++ ){
260
+
261
+ // えーっと、後ろから検索してんのかな...?
262
+
263
+ for( j = 4 - 1; j > i; j-- ){
264
+
265
+ // 昇順になっていないなら?
266
+
267
+       if( arr[j] < arr[j-1] ){
268
+
269
+ // 入れ替え...なのかな?
270
+
271
+ work = arr[j];
272
+
273
+ arr[j] = arr[j-1];
274
+
275
+ arr[j-1] = work;
276
+
277
+ }
278
+
279
+ }
280
+
281
+ }
282
+
283
+ ```
284
+
285
+
286
+
287
+ っていう風に「その行が何をしているのか」を考えながらコメントをつけて考えてみるとか、名前は忘れました(趣味でやっているので)が、〇〇シート だった気がしますが、変数の値がどのように変化していっているのか、またif文での条件式を満たす・満たさないとかの「流れを考える」ためのものがあった気がします。
288
+
289
+ そういうのを使ってみる。
290
+
291
+
292
+
293
+ |変数a|変数b|if|
294
+
295
+ |:--|:--:|--:|
296
+
297
+ |a = 10|b = 20||
298
+
299
+ |a + b = 10 + 20 = 30|b = 20||
300
+
301
+ |a = 30|b = 20|a > 11 で条件を満たす|
302
+
303
+
304
+
305
+ みたいな書き方だった気が...

1

追記1

2019/10/19 07:27

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -131,3 +131,67 @@
131
131
 
132
132
 
133
133
  もし関数がわからないのであれば入門書(サイトでもいい)を読んでください。
134
+
135
+
136
+
137
+ ---
138
+
139
+
140
+
141
+ [追記1]
142
+
143
+
144
+
145
+ > 過去にVBAやGASなどを少しかじったことがあったので、for文くらいならすぐ理解できるかと思ったのですが、せっかく回答いただいた内容が少し調べたくらいでは全く理解できませんでした…。
146
+
147
+
148
+
149
+ えーっと、そういう基礎的なものは入門書を読んでください。
150
+
151
+
152
+
153
+ 一応、サンプル程度のものを載せておきます。
154
+
155
+
156
+
157
+ ```C
158
+
159
+ int isFulfilledCondition( int high[], size_t sizeofHigh, int label1Buffer[], sizeofLabel1Buffer ){
160
+
161
+ // 0から sizeofHigh までループ ( つまり highの個数分チェック )
162
+
163
+ for( i = 0; i < sizeofHigh; i++ ){
164
+
165
+ // 一個でも条件に該当しないのがあるなら"条件を満たしていない"とする
166
+
167
+ if( high[i] != label1Buffer[i] ) return 0;
168
+
169
+ }
170
+
171
+ // ここまで来たらすべての条件が満たされているとする
172
+
173
+ return 1;
174
+
175
+ }
176
+
177
+ ```
178
+
179
+
180
+
181
+ 少なくとも
182
+
183
+
184
+
185
+ - 配列
186
+
187
+ - for文
188
+
189
+ - (自作)関数
190
+
191
+ - (関数に渡すデータが配列のとき)
192
+
193
+ - if文
194
+
195
+
196
+
197
+ の項目は必須です。(今回の場合)