第三種電気主任技術者の過去問
平成29年度(2017年)
機械 問63
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
第三種 電気主任技術者試験 平成29年度(2017年) 機械 問63 (訂正依頼・報告はこちら)
図のフローチャートで表されるアルゴリズムについて、次の問に答えよ。変数は全て整数型とする。
このアルゴリズム実行時の読込み処理において、n = 5とし、a[1]= 2、a[2]= 3、a[3]= 8、a[4]= 6、a[5]= 5とする。
図のフローチャートで表されるアルゴリズムの機能を考えて、出力されるa[5]の値を求めよ。その値として正しいものを次の( 1 )~( 5 )のうちから一つ選べ。
このアルゴリズム実行時の読込み処理において、n = 5とし、a[1]= 2、a[2]= 3、a[3]= 8、a[4]= 6、a[5]= 5とする。
図のフローチャートで表されるアルゴリズムの機能を考えて、出力されるa[5]の値を求めよ。その値として正しいものを次の( 1 )~( 5 )のうちから一つ選べ。
- 2
- 3
- 5
- 6
- 8
正解!素晴らしいです
残念...
この過去問の解説 (2件)
01
アルゴリズムは上から始まり下で終わります。なので、上から順に見ていきます。
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.終了
よって答えは5番の8となります。
今回のプログラムは読み込まれた数値は小さい順に並び替えるプログラムでした。
慣れると一巡して終了条件を理解するとどういったプログラムかわかるようになるそうです。
参考になった数3
この解説の修正を提案する
02
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
出力される a[5]の値は、"8"となる。
よって、正しいものは「5」となる。
参考になった数1
この解説の修正を提案する
前の問題(問62)へ
平成29年度(2017年)問題一覧
次の問題(問64)へ