(2)バグ記録表は,図2のレコード様式でbugrec.txtというファイルに格納されて いる。 8けた 1けた 1けた 1けた 2けた 1けた 2けた 1けた ┌───────┬─┬──┬─┬─────┬─┬─────┬──┐ │ 日付 │△│担当│△│消化項目数│△│摘出バグ数│ \n │ └───────┴─┴──┴─┴─────┴─┴─────┴──┘ △:空白文字 図2 バグ記録表のレコード様式 1. 日付は,年月日を8けたの10進数字(YYYYMMDD)で表現しており,先頭の 4けたYYYYが西暦年を,次の2けたMMが月を,最後の2けたDDが日を表し ている。 2. 担当は,テスト担当者を1けたの英字にコード化したものである。 3. 消化項目数及び摘出バグ数は,2けたの10進数字である。 4. 各項目は,1個の空白文字で区切られており,レコードの終端は改行文字 “\n”である。 5. レコードはテスト担当者ごとに1日のテスト結果を記録したものであり,同一 日付でテスト担当者が異なるレコードが2件以上存在することもある。 6. レコードは日付の昇順に整列されている。 7. ファイルbugrec.txtに記録されているテスト作業日の数は60以内である。 (3)このプログラムでは,ファイルbugrec.txtを入力し,1日当たりの消化項目数 及び摘出バグ数を集計する。さらに,その日までの累積数を計算して,累積消化 項目数と累積摘出バグ数の関係を求め,折れ線グラフ出力関数prtgraphを用いて 信頼度成長曲線を印刷する。 (4)関数prtgraphの仕様は,次のとおりである。 〔機能〕第1引数で指定された個数の点(座標は第2引数の配列内に格納)を折れ 線でつないで印刷する。 〔書式〕 typedef struct{int x; int y; }ZAHYO; void prtgraph(int dcnt,ZAHYO *tb1,char *title); 〔引数〕構造体ZAHYOのメンバx:印刷する点のX座標(このプログラムでは, 累積消化項目数に対応) 構造体ZAHYOのメンバy:印刷する点のY座標(このプログラムでは, 累積摘出バグ数に対応) dcnt: 印刷する点の個数 tbl: 点の座標を格納した配列 tit1e: グラフの表題 〔プログラム〕 #include <stdio.h> #define STBMAX 61 typedef struct { int x; int y; } ZAHYO; void prtgraph( int ZAHYO*, char* ) ; main () { ZAHYO s_tbl[STBMAX]; FILE *fp; long yymmdd, t_yymmdd; int t_bug, t_chk, i; [ a ]; char tanto; fp = fopen("bugrec.txt" "r" ); yymmdd = O; s_tbl[O].x = s_tbl[O].y = O; while( fscanf( fp "[ b ] %c %2d %2d\n", &t_yymmdd, &tanto, &t_chk, &t_bug ) != EOF ){ if ( [ c ] ){ idx++; yynmdd = t_yymmdd; s_tbl[idx].x = s_tbl[idx].y = O; } s_tbl[idx].x [ d ] t_chk; s_tbl[idx].y [ d ] t_bug; } fclose( fp ) ; for ( i=0; i <idx; i++ ) { s_tbl[i+1].x += s_tbl[i].x; s_tbl[i+1].y += s_tbl[i].y; } prtgraph ( [ e ],s_tbl, "信頼度成長曲線” ); } 設問 プログラム中の[ ]に入れる正しい答えを,解答群の中から選べ。 aに関する解答群 a 答イ ア int idx イ int idx=0 ウ int *idx エ int idx=0 オ int idx=NULL bに関する解答群 b 答エ ア %4c%4c イ %4d%4d ウ %8c エ %8ld オ %8s cに関する解答群 c 答オ ア s_tbl[0].x!=t_chk イ s_tbl[0].x==t_chk ウ s_tbl[0].y!=t_bug エ s_tbl[0].y==t_bug オ yymmdd != t_yymmdd カ yymmdd == t_yymmdd dに関する解答群 d 答オ ア |= イ &= ウ = エ −= オ += eに関する解答群 e 答エ ア idx イ idx-1 ウ idx-2 エ idx+1 オ STBMAX