総視聴再生時間43万分以上(2017年5月13日現在)の動画で基本情報技術者試験の過去問&キーワード解説!スキマ時間に動画!〜これじょIT〜

PR広告

平成28年度秋 基本情報技術者試験午後 過去問8設問3 データ構造及びアルゴリズム 合格率アップ!動画付き解説!

次のプログラムの説明及び、プログラムを読んで、設問1~3に答えよ。

 事務計算においては、数値を見やすく表示(印字)するために、例えば3桁ごとに区切りの","を挿入するなどの編集処理がよく行われる。

 関数 Edit は、指定された編集パターンに従って、数値を編集するプログラムである。表1に、関数 Edit を用いた編集例を示す。例lでは、3桁ごとに区切りの","を挿入している。例2では、例1の編集に加え、上位の空いた桁を"*"で埋めている。例3では、数値の右端から2桁目と3桁目の間に"."を挿入している。

表1 関数Editを用いた編集例

編集パターン
例1 例2 例3
"_□□,□□□" "*□□,□□□" "_□□■.□□"
数値 123 "____123" "****123" "___1.23"
1234 "__1,234" "**1,234" "__12.34"
12345 "_12,345" "*12,345" "_123.45"

 ここで、編集パターン中の文字"□"及び"■"は、数字と対応付けされた制御文字を表している。また、"_"は空白文字を表している。

※実際の問題文は下カッコだが、この説明では_(アンサースコア)を利用しています。ご了承ください。

〔プログラムの説明〕

(1) 関数 Edit は、次の形式で呼び出され、二つの引数をもつ。

  関数:Edit(文字型: Pattern[]、文字型:Value[])

 Pattern[] には、編集パターンの文字列が格納されている。Value[] には、編集する数値を表す文字列が格納されている。各配列の添字は、0から始まる。文字列 Pattern[] のi番目の文字は Pattern[i-1] と表記する。文字列 Value[] についても同様である。

(2) Pattern[] は、1文字以上から成る文字列であって、表示可能な図形文字及び制御文字(""及び"")から構成される。

(3) Value[] は、数値を表す文字列であって、数字"0"~"9"の並びの後に、数値が正又は0なら"+"を、負なら"-"を付加した形式である。数字の個数は、Pattern[] 中の文字""及び""の個数と一致するように、必要であれば前方に"0"を付加する。例えば、Pattern[] の内容が""のとき、Value[] には、数値が123なら"00123+"、0なら"00000+"、-123なら"00123-"を指定する。

(4) 関数 Edit は、Value[] で与えられた数値を Pattern[] に従って編集し、編集結果で Pattern[] を置き換える。

〔編集方法〕

 Pattern[] 中の各文字について、先頭から順に1文字ずつ、次の①~③のいずれか一つの操作を実行していく。

① 関数 Edit が呼び出されたときの Pattern[] 中の先頭の文字(以下、fill文字という)で置き換える。

② Value[] 中の対応する桁の数字で置き換える。

③ 置き換えないで、そのまま残す。

(5) 論理型変数 signif は、on 又は off の値を取る。この変数の実行開始時の値は off であり、Value[] 中に最上位から"0"が連続した後に"0"でない数字が見つかると on になる、などの使い方をする。

(6) 関数 Edit が呼び出されるとき、各引数には正しい値が設定されているものとする。

[プログラム]

○関数:Edit(文字型: Pattern[], 文字型: Value[])

○文字型: fill

○論理型: signif

○整数型: p, v

・fill ← Pattern[0]

・signif ← off

・v ← 0

■ p: 0, p < Length(Pattern[]), 1 /* Length()は引数の文字列長を返す */

|▲ Pattern[p] = "□" or Pattern[p] = "■" /* 表2のケース1〜7の処理 */

||/* 現在の変数・配列要素の内容が。表2のケース1〜7の

|| * どれに該当するかを決定し、そのケースに従って

|| * Pattern[p]とsignifの更新処理を行う。*/

||・v ← v + 1

||ー /* 表2のケース8,9の処理 */

||▲signif = off

|||・Pattern[p] ← fill

||▼

|▼

表2 現在の変数・配列要素の内容に応じた行進処理

平成28年度秋 基本情報技術者試験午後問8 データ構造及びアルゴリズム

注記 網掛け部分は、内容を判定しない。

設問3 次の記述中の に入れる正しい答えを、解答群の中から選べ。

 関数 Edit では、例えば、fill文字を"_"とする編集パターンを指定することによって、数値が正なら"__1,234_"、負なら"__1,234-"と編集することができる。表2のケース1~7のうち、数値が正なら数値の後に続く文字をfill文字で置き換えるために用意されたケースはfである。

f に関する解答群

  • ア:2、4及び7
  • イ:3、5及び7
  • ウ:4及び7
  • エ:5及び7

解説 設問3

正解は「エ:5及び7」です!

問題は「表2のケース1~7のうち、数値が正なら数値の後に続く文字をfill文字で置き換えるために用意されたケースはfである。」です。

「数値が正なら数値の後に続く文字をfill文字で置き換えるために用意されたケース」がポイントです。

後に続く文字をfill文字で置き換えるためには、signifがoffになる必要があります。

signifがoffになるのはケース1, 3, 5, 7です。

Value[v + 1]の処理がないが無いため、ケース1は数値が正ならという判断をしませんので除外されます。

数値が正ならということでいくつか数字が並んでいることが想定されるため、ケース3も除外されます。

従って、正解は「エ:5及び7」です!

平成28年度秋 基本情報技術者試験過去問午後 目次

PR広告

フェイスブックコメント

平成28年度秋 基本情報技術者試験 午後 テキスト・動画解説

平成28年度秋 基本情報技術者試験 午前 テキスト・動画解説

平成28年度春 基本情報技術者試験 午後 テキスト・動画解説

平成28年度春 基本情報技術者試験 午前 テキスト・動画解説

平成27年度秋 基本情報技術者試験 午後 テキスト・動画解説

平成27年度春 基本情報技術者試験 午後 テキスト・動画解説

平成27年度春 基本情報技術者試験 午前 テキスト・動画解説

平成26年度秋 基本情報技術者試験 午前 テキスト・動画解説

平成26年度春 基本情報技術者試験 午前 テキスト・動画解説