過去問.com - 資格試験の過去問 | 予想問題の解説つき無料問題集

第三種電気主任技術者の過去問 平成29年度(2017年) 機械 問64

問題

このページは問題閲覧ページです。正解率や解答履歴を残すには、 「条件を設定して出題する」をご利用ください。
[ 設定等 ]
図のフローチャートで表されるアルゴリズムについて、次の問に答えよ。変数は全て整数型とする。
このアルゴリズム実行時の読込み処理において、n = 5とし、a[1]= 2、a[2]= 3、a[3]= 8、a[4]= 6、a[5]= 5とする。

フローチャート中のXで示される部分の処理は何回行われるか、正しいものを次の( 1 )~( 5 )のうちから一つ選べ。
問題文の画像
   1 .
3
   2 .
4
   3 .
5
   4 .
8
   5 .
10
( 第三種 電気主任技術者試験 平成29年度(2017年) 機械 問64 )
このページは問題閲覧ページの為、解答履歴が残りません。
解答履歴を残すには、
条件を設定して出題する」をご利用ください。

この過去問の解説 (2件)

0
フローチャートのアルゴリズムで処理されていくステップを順番に説明します。

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... が変わります。)

付箋メモを残すことが出来ます。
0
解答
アルゴリズムは上から始まり下で終わります。なので、上から順に見ていきます。
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回となります。

問題に解答すると、解説が表示されます。
解説が空白の場合は、広告ブロック機能を無効にしてください。
他のページから戻ってきた時、過去問ドットコムはいつでも続きから始めることが出来ます。
また、広告右上の×ボタンを押すと広告の設定が変更できます。
この第三種電気主任技術者 過去問のURLは  です。
付箋は自分だけが見れます(非公開です)。