平成14年 秋期 基本情報技術者 午後 問07
問07 COBOL
〔プログラムの説明〕 ユーザ ID の発行順に記録してある顧客情報ファイルを読み込んで, ユーザ ID をキー項目とした二分探索木を作成し,顧客リストとして出力するプログラムである。 顧客情報ファイル CUSTOM-IN のレコード様式は,次のとおりである。
(1) 順ファイルである。 (2) ユーザ ID は乱数を利用して発行した12けたの英数字列であり,重複はない。 (3) レコードの順序は,ユーザ ID の発行順である。 (4) 顧客数は 2,000 以下である。
顧客リスト CUSTOM-OUT のレコード様式は,次のとおりである。
(1) 順ファイルである。 (2) ユーザ ID が,“左側の子<親<右側の子”の規則で二分探索木を 構成するようにレコードを記録する。
(3) 左ポインタは,自身を親としたときの左側の子のレコードを指し, 右ポインタは,右側の子のレコードを指す。 (4) 子をもたないときのポインタの値は,0とする。 図1のレコードが,10,6,15,1,12,20 の順に記録されるときのポインタ及び ユーザ ID は次のようになる。
DATA DIVISION. FILE SECTION. FD CUSTOM-IN. 01 IN-R. 03 IN-ID PIC X(12). 03 IN-DATA PIC X(200). FD CUSTOM-OUT. 01 OUT-R PIC X(220). WORKING-STORAGE SECTION. 01 W-KENSU PIC 9(4) VALUE 0. 01 W-1 PIC 9(4). 01 W-2 PIC 9(4). 01 W-TABLE. 03 W-R OCCURS 2000. 05 POINT-L PIC 9(4). 05 POINT-R PIC 9(4). 05 W-ID PIC X(12). 05 W-DATA PIC X(200). 01 END-SW PIC X VALUE SPACE. PROCEDURE DIVISION. HAJIME. OPEN INPUT CUSTOM-IN OUTPUT CUSTOM-OUT. . PERFORM UNTIL END-SW = "E" READ CUSTOM-IN AT END MOVE "E" TO END-SW NOT AT END COMPUTE W-KENSU = W-KENSU + 1 MOVE IN-ID TO W-ID(W-KENSU) MOVE IN-DATA TO W-DATA(W-KENSU) IF W-KENSU > 1 THEN MOVE 1 TO W-2 PERFORM UNTIL W-2 = 0 MOVE W-2 TO W-1 IF IN-ID > W-ID(W-1) THEN MOVE POINT-R(W-1) TO W-2 ELSE MOVE POINT-L(W-1) TO W-2 END-IF END-PERFORM IF IN-ID > W-ID(W-1) THEN MOVE W-KENSU TO POINT-R(W-1) ELSE MOVE W-KENSU TO POINT-L(W-1) END-IF END-IF END-READ END-PERFORM. PERFORM VARYING W-1 FROM 1 BY 1 UNTIL W-1 > W-KENSU END-PERFORM. CL OS E CUSTOM-IN CUSTOM-OUT. STOP RUN. 設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。
a に関する解答群 ア INITIALIZE W-TABLE イ MOVE SPACE TO W-TABLE ウ MOVE 0 TO W-1 W-2 b に関する解答群 ア WRITE OUT-R イ WRITE OUT-R FROM IN-R ウ WRITE OUT-R FROM W-R(W-1) エ WRITE OUT-R FROM W-R(W-KENSU)
設問2 顧客情報ファイルが次のとおりであった場合, このプログラムで出力される顧客リストを解答群の中から選べ。
解答群
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||