平成28年 春期 基本情報技術者 午後 問09
問09 C言語次のCプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。 〔プログラムの説明〕 図形の一部を拡大すると,再び同じパターンの図形が現れる自己相似性をもつ図形を, フラクタル図形と呼ぶ。関数 print_frac は,文字“*”及び空白文字を二次元の 格子状に並べてフラクタル図形を描画するプログラムである。 (1) 関数 print_frac が描画するフラクタル図形の例を,図1に示す。
![]() 図1 関数print_fracが描画するフラクタル図形の例 @ 深さが 0 の図形は,1行1列の文字“*”から成る図形である。 A 深さが 1 以上の図形は,深さが 0 の図形に対して,(2) で説明する生成規則を, 深さの回数だけ繰返し適用して得られる図形である。 (2) 深さが d(1以上)の図形は,深さが d−1 の図形を構成する一つ一つの文字を, 文字“*”であるか空白文字であるかに応じて,図2に示す生成規則のとおりに, 文字の行列で置換したものである。
![]() 図2 フラクタル図形の生成規則 @ 文字“*”の部分は,生成パターンと呼ぶ文字の行列で置換する。 A 空白文字の部分は,生成パターンと同じ大きさで全ての要素が空白文字の行列で置換する。 (3) 生成パターンは,二次元の配列変数 pat によって与える。pat の各要素の値は, 空白文字を表す 0,又は文字“*”を表す 1 である。pat の行数,列数及び内容を変更することで, 異なるフラクタル図形を描画することができる。 (4) 関数 print_frac の仕様は次のとおりである。 引数: d フラクタル図形の深さ
引数: i 行数(一番上の行を 0 行目とする) ここで,関数の引数に誤りはないものとする。 〔プログラム〕
#include <stdio.h>
int pat[2][2] = {
{1, 1 },
{1, Ø }
};
int p_rn = sizeof pat / sizeof pat[Ø];
lnt p_cn = slzeof pat[Ø] / sizeof pat[Ø][Ø];
void print_frac(int);
int exists_at(int, int, int);
void print_frac(int d) {
lnt i, j, rn, cn;
rn = cn = 1;
for (i = Ø; i < d; i++) {
![]() 解答群
設問2 配列変数 pat を変更して,深さが3の図形を描画したところ, 次のとおりになった。配列変数 pat の変更内容として正しい答えを,解答群の中から選べ。
![]() 解答群
設問3 プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群
b 〜 d に関する解答群
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2025 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |||||||||||||||||||||||||||||||||||||||||
