第三種電気主任技術者の過去問
平成29年度(2017年)
機械 問64
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
第三種 電気主任技術者試験 平成29年度(2017年) 機械 問64 (訂正依頼・報告はこちら)
図のフローチャートで表されるアルゴリズムについて、次の問に答えよ。変数は全て整数型とする。
このアルゴリズム実行時の読込み処理において、n = 5とし、a[1]= 2、a[2]= 3、a[3]= 8、a[4]= 6、a[5]= 5とする。
フローチャート中のXで示される部分の処理は何回行われるか、正しいものを次の( 1 )~( 5 )のうちから一つ選べ。
このアルゴリズム実行時の読込み処理において、n = 5とし、a[1]= 2、a[2]= 3、a[3]= 8、a[4]= 6、a[5]= 5とする。
フローチャート中のXで示される部分の処理は何回行われるか、正しいものを次の( 1 )~( 5 )のうちから一つ選べ。
- 3
- 4
- 5
- 8
- 10
正解!素晴らしいです
残念...
この過去問の解説 (2件)
01
1ステップ:START
2ステップ:nを読み込む
・n=5 を読込む
3ステップ:a[n]のnに2段目で読み込んだn=5を代入
・a[n]はa[5]となり、a[1]からa[5]まで5つの箱を準備する
4ステップ:a[1]~a[n]を読込む
・a[1]~a[5]までの箱に、それぞれの値を読込み格納する
・a[1]~a[5]は、問題文で与えられている
→ a[1]=2、a[2]=3、a[3]=8、a[4]=6、a[5]=5
5ステップ:iを1にする
・i=1にする
6ステップ:jをi+1にする
・i=1なので、j=2になる
7ステップ:a[i]がa[j]を比較
a[i]がa[j]より大きければ YESへ進む
a[i]がa[j]より小さければ NOへ進む
・i=1,j=2なので、a[1]とa[2]を比較する
・a[1]=2,a[2]=3なのでa[1]がa[2]より小さい
→ Noへ進む
8ステップ:jをj+1にする
・j=2が+1されて、j=3になる
9ステップ:jとnを比較
jがnより大きければ、YESへ進む
jがnより大きくなければ、NOへ進む
・j=2、n=5なので、jはnより大きくない
→ NOへ進む
10ステップ:a[i]とa[j]を比較
・i=1、j=3なので、a[1]とa[3]を比較する
・a[1]=2,a[3]=8なので、a[1]がa[3]より小さい
→ NOへ進む
11ステップ:jをj+1にする
・j=3が+1されて、j=4になる
12ステップ:jとnを比較
・j=4,n=5となっており、jはnより大きくない
→ NOへ進む
13ステップ:a[i]とa[j]を比較する
・i=1,j=4なので、a[1]とa[4]を比較する
・a[1]=2,a[4]=6なので、a[1]がa[4]より小さい
→ NOへ進む
14ステップ:jをj+1にする
・j=4が+1されて、j=5になる
15ステップ:jとnを比較
・j=5、n=5なので、jはnより大きくない
→ Noへ進む
16ステップ:a[i]とa[j]を比較
・i=1、j=5なので、a[1]とa[5]を比較する
・a[1]=2,a[5]=5なので、a[1]がa[5]より小さい
→ Noへ進む。
17ステップ:jをj+1にする
・j=5が+1されて、j=6になる
18ステップ:jとnを比較する
・j=6,n=5なので、jはnより大きい
→ YESへ進む
19ステップ:iをi+1にする
・i=1が+1されて、i=2になる
20ステップ:iとn-1を比較
・iがn-1より大きければ、YESへ進む
・iがn-1より大きくなければ、NOへ進む
・i=2,n=5なので、iはn-1より小さい
→ NOへ進む
21ステップ:jをi+1にする
・i=2なので、j=3となる。
22ステップ:a[i]とa[j]を比較する
・i=2,j=3なので、a[2]とa[3]を比較する。
・a[2]=3,a[3]=8なので、a[2]がa[3]より小さい
→ NOへ進む
23ステップ:jをj+1にする
・j=3が+1されて、j=4となる
24ステップ:jとnを比較する
・j=4,n=5なので、jはnより大きくない
→ NOへ進む
25ステップ:a[i]とa[j]を比較
・i=2,j=4なので、a[2]とa[4]を比較する
・a[2]=3,a[4]=6なので、a[2]がa[4]より小さい
→ NOへ進む
26ステップ:jをj+1にする
・j=4が+1されて、j=5になる
27ステップ:jとnを比較
・j=5,n=5なので、jはnより大きくない
→ NOへ進む
28ステップ:a[i]とa[j]を比較
・i=2,j=5なので、a[2]とa[5]を比較する
・a[2]=3,a[5]=6なので、a[2]がa[5]より小さい
→ NOへ進む
29ステップ:jをj+1にする
・j=5が+1されて、j=6になる
30ステップ:jとnを比較する
・j=6,n=5なので、jはnより大きい
→ YESへ進む
31ステップ:iをi+1にする
・i=2に1が足されて、i=3になる
32ステップ:iとn-1を比較する、
・i=3,n=5なので、iはn-1より小さい
→ NOへ進む
33ステップ:jにi+1を代入する
・i=3なので、j=4となる
34ステップ:a[i]とa[j]を比較
・i=3,j=4なので、a[3]とa[4]を比較する
・a[3]=8,a[4]=6なので、a[3]がa[4]より大きい
→ YESへ進む
35ステップ:a[i]をmに代入する
・a[3]=8なので、m=8となる
36ステップ:a[j]をa[i]に代入する
・a[4]=6なので、a[3]=6となる
37ステップ:mをa[j]に代入する
・m=8なので、a[4]=8となる
38ステップ:jをj+1にする
・j=4に1が足されて、j=5になる
39ステップ:jとnを比較する
・j=5,n=5なので、jはnより小さい
→ NOへ進む
40ステップ:a[i]とa[j]を比較する
・i=3,j=5なので、a[3]とa[5]を比較する
・a[3]=6で、a[5]=5なので、a[3]がa[5]より大きい
→ YESへ進む
41ステップ:a[i]をmに代入する
・a[3]=6なので、m=6となる
42ステップ:a[j]をa[i]に代入する
・a[5]=5なので、a[3]=5となる
43ステップ:mをa[j]に代入する
・m=6なので、a[5]=6となる
44ステップ:jをj+1にする
・j=5が+1されて、j=6になる
45ステップ:jとnを比較する
・j=6,n=5なので、jはnより大きい
→ YESへ進む
46ステップ:iをi+1にする
・i=3が+1されて、i=4になる
47ステップ:iとn-1を比較する、
・i=4,n=5なので、iはn-1より小さい
→ NOへ進む
48ステップ:jにi+1を代入する
・i=4なので、j=5となる
49ステップ:a[i]とa[j]を比較する
・i=4,j=5なので、a[4]とa[5]を比較する
・a[4]=8,a[5]=6なので、a[4]がa[5]より大きい
→ YESへ進む
50ステップ:a[i]をmに代入する
・a[4]=8なので、m=8となる
51ステップ:a[j]をa[i]に代入する
・a[5]=6なので、a[4]=6となる
52ステップ:mをa[j]に代入する
・m=8なので、a[5]=8となる
53ステップ:jをj+1にする
・j=5が+1されて、j=6になる
54ステップ:jとnを比較する
・j=6,n=5なので、jはnより大きい
→ YESへ進む
55ステップ:iをi+1にする
・i=4が+1されて、i=5になる
56ステップ:iとn-1を比較する
・i=5,n=5なので、iはn-1より大きい
→ YESへ進む
57ステップ:a[1]~a[n]を出力する
・アルゴリズムを実行することで、a[1]~a[5]の値は、
a[1]=2、a[2]=3、a[3]=5、a[4]=6、a[5]=8 となる
58ステップ:END
Xで示される部分の処理が行われるステップは、
(1回目)35~37ステップ
(2回目)42~45ステップ
(3回目)50~52ステップ
となり、3回行われます。
よって、正しいものは「1(3回)」となります。
<補足>
アルゴリズムは、a[1]~a[5]の数字を小さい順番に整列するものです。
今回のフローチャートは、a[1]から順番に確定させるフローになっていましたが、
a[5]から大きい順番に確定させていくフローのアルゴリズムもあります。
(比較する順番、大なり小なり、1が引かれる、etc... が変わります。)
参考になった数2
この解説の修正を提案する
02
アルゴリズムは上から始まり下で終わります。なので、上から順に見ていきます。
1.START : 始め
2.n=5を読み込み
3.a[n]=a[5] ・・・・・a[?]という箱を5個用意するイメージです。
4.a[1]=2、a[2]=3、a[3]=8、a[4]=6、a[5]=5 ・・・・・例えばa[1]という名前の箱に2個なにかが入っているような状態です。
5.i=1 ・・・・・iに1を代入します。
6.i+1=j → 1+1=2 ・・・・・jに2を代入します。
7.a[i]>a[j] → a[1]>a[2] → 2>3 ・・・・・a[1]とa[2]に入っている数値を比較します。この場合、「NO」に進みます。
8.j+1=j → 2+1=3 ・・・・・jに3を代入します。
9.j>n → 3>5 ・・・・・「NO」に進みます。
10. a[i]>a[j] → a[1]>a[3] → 2>8 ・・・・・a[1]とa[3]に入っている数値を比較します。この場合、「NO」に進みます。
11.j+1=j → 3+1=4 ・・・・・jに4を代入します。
12.j>n → 4>5 ・・・・・「NO」に進みます。
13. a[i]>a[j] → a[1]>a[4] → 2>6 ・・・・・a[1]とa[4]に入っている数値を比較します。この場合、「NO」に進みます。
14.j+1=j → 4+1=5 ・・・・・jに5を代入します。
15.j>n → 5>5 ・・・・・「NO」に進みます。
16. a[i]>a[j] → a[1]>a[5] → 2>5 ・・・・・a[1]とa[5]に入っている数値を比較します。この場合、「NO」に進みます。
17.j+1=j → 5+1=6 ・・・・・jに6を代入します。
18.j>n → 6>5 ・・・・・この場合「YES」に進みます。この処理は1つの箱基準に全ての箱と照合させるための処理となります。
19.i+1=i → 1+1=2 ・・・・・iに2を代入します。
20.i>n-1 → 2>5-1 ・・・・・「NO」に進みます。
21.i+1=j → 2+1=3 ・・・・・jに3を代入します。
22. a[i]>a[j] → a[2]>a[3] → 3>8 ・・・・・a[2]とa[3]に入っている数値を比較します。この場合、「NO」に進みます。
23.j+1=j → 3+1=4 ・・・・・jに4を代入します。
24.j>n → 4>5 ・・・・・「NO」に進みます。
25. a[i]>a[j] → a[2]>a[4] → 3>6 ・・・・・a[2]とa[3]に入っている数値を比較します。この場合、「NO」に進みます。
26.j+1=j → 4+1=5 ・・・・・jに5を代入します。
27.j>n → 5>5 ・・・・・「NO」に進みます。
28. a[i]>a[j] → a[2]>a[5] → 3>5 ・・・・・a[2]とa[5]に入っている数値を比較します。この場合、「NO」に進みます。
29.j+1=j → 5+1=6 ・・・・・jに6を代入します。
30.j>n → 6>5 ・・・・・「YES」に進みます。
31.i+1=i → 2+1=3 ・・・・・iに3を代入します。
32.i>n-1 → 3>5-1 ・・・・・「NO」に進みます。
33.i+1=j → 3+1=4 ・・・・・jに4を代入します。
34. a[i]>a[j] → a[3]>a[4] → 8>6 ・・・・・a[3]とa[4]に入っている数値を比較します。この場合、「YES」に進みます。
35.a[i]=m → a[3]=m ・・・・・mに8を代入します。
36.a[j]=a[i] → a[4]=a[3] ・・・・・a[3]にa[4]の値を代入します。a[3]には6が入ります。
37.m=a[j] → 8=a[4] ・・・・・a[4]にmの値を代入します。a[4]には8が入ります。
38.j+1=j → 4+1=5 ・・・・・jに5を代入します。
39.j>n → 5>5 ・・・・・「NO」に進みます。
40. a[i]>a[j] → a[3]>a[5] → 6>5 ・・・・・a[3]とa[5]に入っている数値を比較します。この場合、「YES」に進みます。
41.a[i]=m → a[3]=m ・・・・・mに6を代入します。
42.a[j]=a[i] → a[5]=a[3] ・・・・・a[3]にa[4]の値を代入します。a[3]には5が入ります。
43.m=a[j] → 6=a[4] ・・・・・a[4]にmの値を代入します。a[4]には6が入ります。
44.j+1=j → 5+1=6 ・・・・・jに6を代入します。
45.j>n → 6>5 ・・・・・「YES」に進みます。
46. i+1=i → 3+1=4 ・・・・・iに4を代入します。
47.i>n-1 → 4>5-1 ・・・・・「NO」に進みます。
48.i+1=j → 4+1=5 ・・・・・jに5を代入します。
49. a[i]>a[j] → a[4]>a[5] → 8>6 ・・・・・a[4]とa[5]に入っている数値を比較します。この場合、「YES」に進みます。
50.a[i]=m → a[4]=m ・・・・・mに8を代入します。
51.a[j]=a[i] → a[5]=a[4] ・・・・・a[4]にa[5]の値を代入します。a[4]には6が入ります。
52.m=a[j] → 8=a[5] ・・・・・a[5]にmの値を代入します。a[5]には8が入ります。
53.j+1=j → 5+1=6 ・・・・・jに6を代入します。
54.j>n → 6>5 ・・・・・「YES」に進みます。
55. i+1=i → 4+1=5 ・・・・・iに5を代入します。
56.i>n-1 → 5>5-1 ・・・・・「YES」に進みます。
57.a[1]=2、a[2]=3、a[3]=5、a[4]=6、a[5]=8を出力します。
58.終了
上記のように34、40、49行目の分岐でXに向かいますのでXの処理は3回行われます。
よって答えは1番の3回となります。
参考になった数0
この解説の修正を提案する
前の問題(問63)へ
平成29年度(2017年)問題一覧
次の問題(問65)へ