平成7年度 秋期 第二種 午後 問11

                        [更新日]2010.01.06
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 次の問11から問14までの4問については、この中から2問を選択し、答案用紙の┃ ┃選択欄の[選]を黒くマークして解答してください。               ┃ ┃ なお、2問以上選択した場合には、はじめの1問について採点します。      ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 問11 次のCのプログラムの説明を読んで、設問1〜4に答えよ。 [プログラムの説明]  チェーン店舗数が19で、各店舗の営業時間が午前10時から午後7時までのスーパー マーケットのおけるPOSデータ集計プログラムである。集計対象年と商品コードを 指定して、商品の時間帯別の売上げ状況を集計し印字する。  各店舗のPOSデータは、図1に示したレコード様式によるPOSデータファイル (pos.f)に格納されている。POSデータレコードは図1の七つの項目からなり、各 項目間は1個の空白文字で区切られている。レコードの終端には改行文字 "\n" が 付いている。  各項目はすべて固定長であり、販売年月日と販売時刻とその他以外の項目は、10 進数字列で構成されている。  販売年月日は西暦年(YYYY)、月(MM)、日(DD)による "YYYY-MM-DD" の10けたであり、販売時刻は時(HH)、分(MM)による "HH:MM" の5けたで ある。  なお、図1に示したけた数には、項目間の区切り文字を含んでいない。 ┌─────────┬───┬─────┬────┬───┬──────────┐ │商品コード│単 価│販 売│販売年月日│販売時刻│ 店 │その他(顧客コード,│ │     │   │個 数│     │    │コード│レジ担当コードなど)│ │     │   │   │     │    │   │          │ │ 8けた │6けた│4けた│ 10けた│ 5けた│4けた│   14けた   │ └─────┴───┴───┴─────┴────┴───┴──────────┘           図1 POSデータレコード様式  例えば、1995年1月10日の午後2時に、店コードが "0011" の店舗で商品コー ドが "01010101" のコーラ(1本250円)が6本売れた場合は、POSデータレコー ドは図2のようになる。   商品              販売    販売         販売     店   コード      単価     個数    年月日        時刻     コード   その他 ┌───────────────────────────────────────────────────────────┐ │01010101 000250 0006 1995−01−10 14:00 0011 0003−0013−0000\n│ └───────────────────────────────────────────────────────────┘               図2 POSデータレコードの例 POSデータ集計結果の印字例は、図3のようになる。 ┌───────────────────────────────────┐ │*** 商品の時間帯別売上状況 ***                │ │商品コード=10011111 集計対象年=1995          │ │時間帯  売上額       1000 2000 3000…9000 │ │−−−−:−−−−−−:−−−−+−−−−+−−−−+−−…−+   │ │       :                           │ │                                   │ │   店コード = 0011                     │ │10時台:000000:                       │ │11時台:000000:                       │ │12時台:001000:*****                  │ │13時台:000400:**                     │ │14時台:000200:*                      │ │15時台:000200:*                      │ │       :                           │ │                                   │ │   店コード = 0012                     │ │       :                           │ └───────────────────────────────────┘ [プログラム] #include <stdio.h> #include <string.h> #define TMAX 19 ………………………… 1. #define HMAX 20 ………………………… 2. #define OP_TM 10 ………………………… 3. #define CL_TM 19 ………………………… 4. main() { char shina[8],scode[9],dummy[16]; int kosu, yyyy, mm, dd, ii, fun, static long gaku,kstack [TMAX] [HMAX]; FILE *fp; int wi,wj,wk; printf( "*** POSデータ 売上状況集計プログラム ***\n\n" ); printf( " 商品コードと対象年を入力して下さい。\n\n"); printf( "商品コード(8けた) =" ); scanf( "%8c",scode ); scode[8] = '\0'; printf ( "年 (4けた) =" ); scanf( "%04d",&nen ); for (wi = 0; wi < TMAX; wi++ ) for (wj = 0; wi < HMAX;wj++ ) kstack[wi][wj] = 0; fp = fopen( "pos.f","r" ); while( fscanf( fp, "%8c %061d %04d %04d-%02d-%02d %02d:%02d %04d %15c" , shina, &gaku, &kosu, &yyyy, &mm, &dd, &ji, &fun, &stcd, dummy ) ! = EOF){ if (( nen == yyyy) && (strncmp( shina,scode,8 ) == 0)) kstack[stcd][ji] == gaku * kosu; } fclose( fp ); printf( "*** 商品の時間帯別売上状況 ***\n" ); printf( "商品コード =%s 集計対象年 = %4d\n" , scode , nen ); printf( "------:-------:----+----+----+----+----+----+----+----+----+\n" ); for ( wi = 0; wi < TMAX; wi++ ){ printf( "\n 店コード = %04d\n" , wi ); for ( wj = OP_TM; wj < CL_TM; wj++ ){ printf( "%02d時台: %061d:", wj, kstack[wi][wj]/1000 ); for ( wk = (int)(kstack[wi][wj]/200000L); wk > 0; wk-- ) printf( "*" ); ………………………… 5. printf( "\n" ); } } } 設問1 このプログラムで扱っている店コードに関して、正しい答えを解答群の中か   ら選べ。 解答群  ア このプログラムだけでは店コード具体的な値を断定することはできない。  イ 将来のための予備コード0019を含めて、0000から0019までの20種類である。  ウ 店コードは0000から0018までの19種類である。  エ 店コードは0001から0019までの19種類である。 設問2 プログラムの中の5.の行では、売上げ額の推移を視覚的に示すために文字    "*"による横棒グラフ表示を行なっている。     ある時間帯の売上げ額が1,248,500円の場合、棒グラフとして印字される文    字の個数として適切な値を解答群の中から選べ。 解答群  ア 5   イ 6   ウ 7   エ 11   オ 12 設問3 このプログラムでは、処理上で幾つかの前提条件を設けている。条件又は制    約として適切でないものを、解答群の中から選べ。 解答群  ア POSデータレコードの各項目は、論理的に正しい値が入っているとする。  イ 指定された年及び商品コードに合致するPOSデータレコードが、少なくと   も1個以上存在する。  ウ 販売時刻が営業終了時刻のPOSデータは集計印字の対象外とする。  エ 売上額の表示単位は千円に固定し、金額の千円未満は切り捨てる。 設問4 営業終了時刻が午後10時に延長されることになった。集計表示時間帯を拡    張するために、1.から4.のいずれの#define行を変更すればよいか。正しい    答を解答群の中から選べ。 解答群  ア 1.   イ 2.   ウ 3.   エ 4.   オ 1.と2.  カ 1.と3. キ 1.と4. ク 2.と3. ケ 2.と4. コ 3.と4.
戻る 次頁:問12