7 プログラムの説明を読んで, プログラムの (1)(5) を答えなさい < プログラムの説明 > 処理内容 CSV ファイル ( 作品名データと入場者数データ ) を読み, 年齢区分ごとの入場者数と売上金額を表示するプログラムである 入力データ作品名データ ( ファイル名 :movie.csv)

Similar documents
全商情報処理検定プログラミング部門 サンプル問題1級解説

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

JavaプログラミングⅠ

目 次 オブジェクト指向 1 3 オブジェクト指向 2 9 二分探索 14 二次元配列 16 ソート 18 ArrayList 25 解答 27 2

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

K227 Java 2

プログラミングA

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

オブジェクト指向プログラミング・同演習 5月21日演習課題

Prog1_15th

JavaプログラミングⅠ

スライド 1

tkk0408nari

問題1 以下に示すプログラムは、次の処理をするプログラムである

Programming-C-9.key

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

Microsoft PowerPoint ppt

2

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

プログラムの基本構成

[1 級共通問題 ] 1 次の説明文に最も適した答えを解答群から選び, 記号で答えなさい 1. 複数のハードディスク装置を 1 つの装置として管理し, アクセスの高速化や信頼性を高めるための技術 2. 経路選択機能やパケットのフィルタリング機能を持ち, ネットワーク上のデータを中継する装置 3. シ

明解Javaによるアルゴリズムとデータ構造

Microsoft Word - java a.doc

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

I java A

新・明解Java入門

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

Javaセキュアコーディングセミナー東京 第3回 入出力(File, Stream)と例外時の動作 演習解説

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

Prog1_11th

Microsoft Word - NonGenList.doc

文字列操作と正規表現

デジタル表現論・第4回

2

Microsoft PowerPoint - prog09.ppt

明解Javaによるアルゴリズムとデータ構造

デジタル表現論・第6回

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

Microsoft PowerPoint - prog09.ppt

Prog1_10th


問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

Microsoft Word - NonGenTree.doc

Prog1_6th

2

JAVA とテンプレート

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(Java) サンプル問題 知識科目 第 1 問 (

2016 年度 JAVA 講座第六週目 目次 パッケージ... 2 パッケージの作成... 2 パッケージの使用方法... 3 異なるパッケージ同名クラスの宣言... 4 パッケージの側面から見たアクセス修飾子... 4 ラッパークラス... 5 ラッパークラス利用法:キャスト... 5 ラッパーク

2

問題1 以下に示すプログラムは、次の処理をするプログラムである

r1.dvi

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

Javaによるアルゴリズムとデータ構造

新・明解Javaで学ぶアルゴリズムとデータ構造

JavaプログラミングⅠ

Assignment_.java 課題 : 転置行列 / class Assignment_ public static void main(string[] args) int i,j; int[][] array = 1,,,,,,,,,,,,,1,1,; 行 列行列 i

基本情報STEP UP演習Java対策

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

GEC-Java

GEC-Java

Java講座

新・明解Javaで学ぶアルゴリズムとデータ構造

マークアップ言語

プログラミング入門1

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

DVIOUT-exer

PowerPoint Presentation

ALG ppt

Prog2_10th

Prog1_3rd

Prog2_9th

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

JavaプログラミングⅠ

プログラミング入門1

ALG ppt

JavaプログラミングⅠ

JavaプログラミングⅠ

情報処理Ⅰ

JavaプログラミングⅠ

untitled

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

JavaプログラミングⅠ

解きながら学ぶJava入門編

メソッドのまとめ

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

Java学習教材

JavaプログラミングⅠ

目 次 入出力 3 算術演算 4 論理演算 8 合計平均 12 ファイル入出力 16 最大値最小値 18 配列 22 線形探索 27 解答 31 2

JavaプログラミングⅠ

Microsoft Word - CompA-Ex doc

ohp07.dvi

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

やさしいJavaプログラミング -Great Ideas for Java Programming サンプルPDF

PowerPoint プレゼンテーション

GEC-Java


解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

第14回若年者ものづくり競技大会「業務用ITソフトウェア・ソリューションズ」職種 模擬競技課題

スライド 1

3 Java 3.1 Hello World! Hello World public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World");

Transcription:

プログラミング部門 1 級 無断転載禁止 2013 年月日実施 この問題は, 平成 25 年 2 月時点の参考資料です 平成 25 年度 ( 新検定基準による言語選択問題 Java, マクロ言語の出題例 ) 情報処理検定試験 <プログラミング部門 > 第 1 級試験問題 注意事項 1. 監督者の指示があるまで, 試験問題に手を触れないでください 2. 試験問題は,10 ページあります 3. 解答はすべて解答用紙に記入します 4. 1 2 3 4 5 6 は共通問題です 5. 7 の問題は,Java マクロ言語 COBOLのいずれか1つを選択し, 解答用紙の選択言語を で囲んでください 6. 電卓などの計算用具は使用できません 7. 筆記用具などの物品の貸借はできません 8. 問題用紙の回収については監督者の指示にしたがってください 9. 制限時間は,60 分です 主催公益財団法人全国商業高等学校協会

7 プログラムの説明を読んで, プログラムの (1)(5) を答えなさい < プログラムの説明 > 処理内容 CSV ファイル ( 作品名データと入場者数データ ) を読み, 年齢区分ごとの入場者数と売上金額を表示するプログラムである 入力データ作品名データ ( ファイル名 :movie.csv) 作品名 実行結果 入場者数データ ( ファイル名 :visitor.csv) 映画コード 年齢区分 入場者数 ( 第 1 図 ) ( 第 2 図 ) ( 作品名 ) ( 中学生 ) ( 高校生 ) ( 大人 ) ( シニア ) ( 合計人数 ) ( 売上金額 ) 16 人 22 人 60 人 30 人 128 人 187,000 円 6 人 11 人 70 人 22 人 109 人 170,500 円 15 人 23 人 52 人 20 人 110 人 163,100 円 15 人 21 人 30 人 11 人 77 人 111,500 円 処理条件 1. 第 1 図のようなある映画館の作品名データを読み,Movie クラスをインスタンス化したあと,ArrayList に格納する 上映した作品は作品名データの件数分あり, 映画コードは ArrayList へ格納した順番 (0) に対応している 2. 第 2 図のような入場者数データを読み, 次の処理を行う 次の料金表の年齢区分から鑑賞料金を求め, 入場者数を掛けて売上金額を計算する 料金表 ( 中学生 ) ( 高校生 ) ( 大人 ) ( シニア ) 年齢区分 0 1 2 3 鑑賞料金 \1,000 \1,500 \1,800 \1,000 下記の配列 agenum に年齢区分ごとの人数を集計する なお, 添字は年齢区分と対応している また,numTotal には, 合計人数を集計する 配列 (0) (1) (2) (3) agenum ( 中学生 ) ( 高校生 ) ( 大人 ) ( シニア ) 3. データを読み終えたあと, 売上金額の降順に並べ替える 4. 第 3 図のように作品名から売上金額までをディスプレイに表示する <Java プログラム > // クラス Movie public class Movie { private String name; private int sales; private int[] agenum; private int numtotal; public Movie(String na) { name = na; agenum = new int[4]; public int getsales() { return sales; public void calc(int age, int num, int charge) { (1) ; numtotal += num; sales += num * charge; public void printmovie() { System.out.printf(" " + "%-8s", name); for(int i = 0; i < agenum.length; i++) { System.out.printf(" " + "%3d" + " 人 ", agenum[i]); System.out.printf(" " + "%3d" + " 人 ", numtotal); System.out.printf("%,d" + " 円 " + "%n", sales); ( 第 3 図 )

// クラス MovieTheater import java.io.*; import java.util.arraylist; public class MovieTheater { private static final int[] CHARGE = { 1000, 1500, 1800 ; public static void main(string[] args) { ArrayList<Movie> list = new ArrayList<Movie>(); try { BufferedReader br = new BufferedReader(new FileReader("movie.csv")); String line; while((line = br.readline())!= null) { Movie movie = new Movie(line); list.add(movie); br.close(); BufferedReader br2 = new BufferedReader(new FileReader("visitor.csv")); String line2; while((line2 = br2.readline())!= null) { String[] str = line2.split(","); int code = Integer.parseInt(str[0]); int age = Integer.parseInt(str[1]); int num = Integer.parseInt(str[2]); int index; if(age < 3) { (2) ; else { index = 0; list.get(code).calc(age, num, CHARGE[index]); br2.close(); catch(filenotfoundexception e) { System.out.println(" ファイルが見つかりません "); catch(ioexception e) { System.out.println(" 入出力エラーが発生しました "); Movie work; for(int m = list.size() - 1; m > 0; m--) { for(int n = 0; (3) ; n++) { if(list.get(n).getsales() < list.get(n + 1).getSales()) { (4) ; list.set(n, list.get(n + 1)); list.set(n + 1, work); for(int i = 0; (5) ; i++) { list.get(i).printmovie(); 解答 (1) agenum[age] += num (2) index = age (3) n < m (4) work = list.get(n) (5) i < list.size()

7 プログラムの説明を読んで, プログラムの (1)(5) を答えなさい < プログラムの説明 > 処理内容データベースに記録された駐車場の利用番号から利用時間までを読み, 曜日別に利用金額計と順位を表示するプログラムである 入力データ ( 表名 : 利用表 ) 利用番号 年 月 日 曜日コード 区分コード 車種コード 利用時間 実行結果 ( 一般会員 ) ( 月 ) 9,000 円 :6 位 ( 第 1 図 ) ( 日 )29,400 円 :4 位 ( 特別会員 ) ( 月 )32,000 円 :2 位 ( 日 ) 2,000 円 :7 位 ( 第 2 図 ) 処理条件 1. 一般会員の General クラスと特別会員の Special クラスをそれぞれインスタンス化する なお, 各クラスとも Customer クラスを継承している 2. 第 1 図の利用表から,2 月のデータを利用番号の昇順に抽出し, 次の処理を行う 曜日コードは06, 区分コードは12, 車種コードは13である なお, 利用時間は, 分単位で記憶されて いる 区分コードをもとに次のように利用金額を求める 区分コード :1( 一般会員 ) 20 分ごとに 200 円 2( 特別会員 ) 720 分までは一律 1,000 円, 以降 60 分ごとに 100 円を追加する 曜日コードと車種コードをもとに配列 total に利用金額を集計する なお, 行方向は車種コード, 列方向は曜日コ ードがそれぞれ添字に対応している 配列 total (0) (1) (2) (3) (4) (5) (6) (0) ( 利用金額計 ) (1) ( 小型車 ) (2) ( 普通車 ) (3) ( 大型車 ) ( 月 ) ( 火 ) ( 水 ) ( 木 ) ( 金 ) ( 土 ) ( 日 ) (0) (1) (2) (3) (4) (5) (6) rank ( 順位 ) ( 月 ) ( 火 ) ( 水 ) ( 木 ) ( 金 ) ( 土 ) ( 日 ) 利用金額計の降順に順位をつける なお, 配列 rank は配列 total の列方向と添字で対応している 3. 第 2 図のように, 区分コードごとに, 各曜日の利用金額計と順位をディスプレイに表示する <Java プログラム > // クラス Customer public abstract class Customer { protected int[][] total = new int[4][7]; protected int[] rank = new int[7]; public Customer() { for(int m = 0; m < rank.length; m = m + 1) { (1) ; public void juni() { for(int m = 0; m < 6; m = m + 1) { int (2) ; for(int n = p; n < 7; n = n + 1) { if(total[0][m] < total[0][n]) { rank[m] = rank[m] + 1; else if(total[0][m] > total[0][n]) { rank[n] = rank[n] + 1; public void syukei(int syasyu, int week, int jikan) { int kin = calc(jikan); total[syasyu][week] = (3) ; total[0][week] = total[0][week] + kin;

public void printtotal() { for(int n = 0; n < 7; n = n + 1) { System.out.printf("%,7d" + " 円 :" + "%d" + " 位 " + "%n", (4), rank[n]); public abstract int calc(int jikan); // クラス General public class General extends Customer { public General() { super(); public int calc(int jikan) { int kin = (jikan / 20 + 1) * 200; return kin; // クラス Special public class Special extends Customer { public Special() { super(); public int calc(int jikan) { int kin; if(jikan <= 720) { kin = 1000; else { kin = 1000 + ((jikan - 721) / 60 + 1) * 100; return kin; // クラス Parking import java.sql.*; public class Parking { public static void main(string[] args) { try { Class.forName(" ドライバ名 "); Connection con = DriverManager.getConnection(" データベースの場所 ", " ユーザ名 ", " パスワード "); Statement stmt = con.createstatement(); String sqlstr = "SELECT * FROM 利用表 WHERE 月 = 2 ORDER BY 利用番号 ASC"; ResultSet rs = stmt.executequery(sqlstr); General gene = new General(); Special spec = new Special(); while(rs.next()) { int week = rs.getint(" 曜日コード "); int kubun = rs.getint(" 区分コード "); int syasyu = rs.getint(" 車種コード "); int jikan = rs.getint(" 利用時間 "); if( (5) ) { gene.syukei(syasyu, week, jikan); else { spec.syukei(syasyu, week, jikan); gene.juni(); gene.printtotal(); spec.juni(); spec.printtotal(); rs.close(); stmt.close(); con.close(); catch(classnotfoundexception e) { System.out.println(" クラスが見つかりません "); catch(sqlexception e) { System.out.println(" エラーが発生しました "); 解答 (1) rank[m] = 1 (2) p = m + 1 (3) total[syasyu][week] + kin (4) total[0][n] (5) kubun == 1

7 プログラムの説明を読んで, プログラムの (1)(5) を答えなさい <プログラムの説明 > 処理内容 キーボードから入力された体育祭の結果を集計し, 学年, 組ごとに表示するプログラムである 入力データ ( 種目コード ) ( 学年 ) ( 組 ) ( 順位 ) ( 第 1 図 ) 実行結果種目コード学年組順位を入力してください 202 1 1 2 1 年 1 組パンくい競争 : 6 点障害物競走 : 10 点 100m 走 : 14 点 400m 走 : 2 点合計得点 79 点 1 年 2 組 ( 第 2 図 ) 処理条件 1. アトラクション競技 ( 種目コード100 番台 ) を管理するAttractionContestクラスと, トラック競技 ( 種目コード200 番台 ) を管理するTrackContestクラスを, それぞれインスタンス化し, 種目コード順に配列 contestに格納する なお, 種目は全 10 種目である 配列 (0) (1) (8) (9) contest 2. 第 2 図のように, キーボードから第 1 図のデータを入力すると, 次の処理を行う 種目コードをもとに, 配列 contestを探索する 学年, 組を添字として利用し, 配列 scoretotalに得点を集計する なお, 得点は, 次の得点表のように求める 得点表順位 1 位 2 位 9 位 10 位 アトラクション競技の得点 10 点 9 点 2 点 1 点 トラック競技の得点 アトラクション競技の得点の2 倍 配列 scoretotal (0) (1) (2) (3) (4) (0) (1 年 ) (1) (2 年 ) (2) (3 年 ) (1 組 ) (2 組 ) (3 組 ) (4 組 ) (5 組 ) 第 2 図のように, 学年, 組ごとに, 各種目の得点と合計得点をディスプレイに表示する 3. キーボードから 0 が入力されたら処理を終了する <Java プログラム > // クラス Contest public abstract class Contest { private int code; private String name; protected int[][] scoretotal; public Contest(int code, String name, int nen, int kumi) { this.code = code; this.name = name; this.scoretotal = new int[nen][kumi]; public int getcode() { return code; public int[][] getscoretotal() { return scoretotal; public void printscoretotal(int m, int n) { System.out.print(" " + name); System.out.printf(":" + "%3d" + " 点 " + "%n", scoretotal[m][n]); public abstract void scorecalc(int nen, int kumi, int rank);

// クラスAttractionContest public class AttractionContest extends Contest { public AttractionContest(int code, String name, int nen, int kumi) { super(code, name, nen, kumi); public void scorecalc(int nen, int kumi, int rank) { int score = (1) ; scoretotal[nen - 1][kumi - 1] += score; // クラス TrackContest public class TrackContest extends Contest { public TrackContest(int code, String name, int nen, int kumi) { super(code, name, nen, kumi); public void scorecalc(int nen, int kumi, int rank) { int score = (1) ; scoretotal[nen - 1][kumi - 1] += score * 2; // クラス AthleticFestival import java.util.scanner; public class AthleticFestival { private static final int NEN = 3; private static final int KUMI = 5; private static Contest[] contest = new Contest[10]; private static int[] contestcode = { 101,, 205 ; private static String[] contestname = { " パンくい競争 ",, "400m 走 " ; public static void main(string[] args) { for(int i = 0; i < contest.length; i++) { if(contestcode[i] < 200) { contest[i] = new AttractionContest(contestCode[i], contestname[i], NEN, KUMI); else { contest[i] = new TrackContest(contestCode[i], contestname[i], NEN, KUMI); System.out.print(" 種目コード学年組順位を入力してください "); Scanner sc = new Scanner(System.in); int code = sc.nextint(); while(code!= 0) { int nen = sc.nextint(); int kumi = sc.nextint(); int rank = sc.nextint(); int (2) ; int highindex = contest.length - 1; int index = (lowindex + highindex) / 2; while(contest[index].getcode()!= code) { if( (3) ) { lowindex = index + 1; else { highindex = index - 1; index = (lowindex + highindex) / 2; contest[index]. (4) ; for(int m = 0; m < NEN; m++) { for(int n = 0; n < KUMI; n++) { System.out.printf("%d" + " 年 " + "%d" + " 組 " + "%n", m + 1, n + 1); int gokei = 0; for(int p = 0; (5) ; p++) { contest[p].printscoretotal(m, n); gokei += contest[p].getscoretotal()[m][n]; System.out.println(" 合計得点 " + gokei + " 点 "); System.out.print(" 種目コード学年組順位を入力してください "); code = sc.nextint(); sc.close(); 解答 (1) 11 - rank (2) lowindex = 0 (3) contest[index].getcode() < code (4) scorecalc(nen, kumi, rank) (5) p < contest.length

[1 級マクロ言語選択者のための問題 ] 7 プログラムの説明を読んで, プログラムの (1)(5) を答えなさい <プログラムの説明 > 処理内容調査データを読み, 店舗別平均評価点を表示するプログラムである 入力データ調査データ ( ファイル名 :tyosa.csv) 調査員コード 店舗番号 ユーザーフォーム 実行結果 味 接客 雰囲気 値段 場所 ( 第 1 図 ) 店舗別平均評価点 店舗名 5 項目 味 接客 雰囲気 値段 場所 評価 4.26 4.25 4.29 4.18 4.43 4.14 A 4.12 4.08 3.82 4.54 4.08 4.08 B 3.55 3.51 3.58 3.64 3.45 3.59 C 3.54 4.48 4.48 3.91 2.37 2.46 C (TextBox1) 表示する店舗の評価を入力してください (TextBox2) 表 示 ク リ ア 終 了 ( 第 2 図 ) 処理条件 1. 第 1 図の調査データの店舗番号には130 が記録されている また, 味, 接客, 雰囲気, 値段, 場所には評価点 (15) が記録されている 配列 TenMei Hyoka (0) (0) (29) (29) (30) (30) ( 店舗名 ) ( 評価 ) 2. ユーザーフォーム初期化時に次の処理を行う 配列 TenMei に店舗名を記憶する なお, 店舗は 30 店である 第 1 図の店舗調査データを読み, 店舗番号をもとに味から場所までの各評価点を配列 Syukei に集計する なお, 配列 TenMei, 配列 Hyoka の添字と配列 Syukei の行方向の添字は対応している また,Syukei の 0 列目には 5 項目の評価点の合計を,6 列目には件数を集計する 配列 Syukei (0) (1) (2) (3) (4) (5) (6) (0) (29) (30) (5 項目 ) ( 味 ) ( 接客 ) ( 雰囲気 ) ( 値段 ) ( 場所 ) ( 件数 ) データを読み終えたあと, 配列 Syukei の05 列目の各平均評価点を求める また, 評価基準にしたがって評価を求め, 配列 Hyoka に記憶する 評価基準 評価 5 項目が 4.2 以上 A 5 項目が 3.8 以上 B その他 C 5 項目の平均の降順に配列 TenMei, 配列 Hyoka, 配列 Syukei を並べ替える また, 店舗名から評価までを TextBox1 に 表示する 3.TextBox2 に "A","B","C" いずれかを入力し, 表示ボタンをクリックすると, 入力された文字列と同じ評価のデータを TextBox1 に表示する また,TextBox2 が空白の場合, 表示ボタンをクリックするとすべてのデータを TextBox1 に表示する <マクロ言語プログラム> Option Explicit Dim Syukei(30, 6) As Double Dim TenMei(30) As String, Hyoka(30) As String

[1 級マクロ言語選択者のための問題 ] Private Sub UserForm_Initialize() Dim g As Integer,, Koumoku(5) As Integer TextBox1.Text = "": TextBox2.Text = "" For g = 0 To 30 For r = 0 To 6 Syukei(g, r) = 0 Next g TenMei(1) = " ": TenMei(2) = " ": TenMei(29) = " ": TenMei(30) = " ": Open "tyosa.csv" For Input As #1 Do While Not EOF(1) Input #1, TyoCode, TenCode, Koumoku(1), Koumoku(2), Koumoku(3), Koumoku(4), Koumoku(5) For r = 1 To 5 Syukei(TenCode, r) = Syukei(TenCode, r) + Koumoku(r) Syukei(TenCode, 6) = Syukei(TenCode, 6) + 1 Loop For g = 1 To 30 For r = 1 To 5 (1) Next g For g = 1 To 30 Syukei(g, 0) = Syukei(g, 0) / (Syukei(g, 6) * 5) For r = 1 To 5 Syukei(g, r) = Syukei(g, r) / Syukei(g, 6) If Syukei(g, 0) >= 4.2 Then Hyoka(g) = "A" Else If Syukei(g, 0) >= 3.8 Then Hyoka(g) = "B" Else Hyoka(g) = "C" End If End If Next g Call Seiretu Call 表示 _Click Private Sub 表示 _Click() Dim g As Integer, r As Integer TextBox1.Text = "" For g = 1 To 30 If (2) Or TextBox2.Text = "" Then TextBox1.Text = TextBox1.Text & TenMei(g) & " " For r = 1 To 5 TextBox1.Text = TextBox1.Text & Format( (3), "0.00") & " " TextBox1.Text = TextBox1.Text & Format(Syukei(g, 0), "0.00") & " " TextBox1.Text = TextBox1.Text & Hyoka(g) & Chr(13) & Chr(10) End If Next g Private Sub クリア _Click() TextBox2.Text = "" Private Sub 終了 _Click() End Private Sub Seiretu() Dim m As Integer,, p As Integer For m = 2 To 30 For n = m - 1 To 1 Step -1 If (4) Then TenMei(0) = TenMei(n) TenMei(n) = TenMei(n + 1) TenMei(n + 1) = TenMei(0) Hyoka(0) = Hyoka(n) Hyoka(n) = Hyoka(n + 1) Hyoka(n + 1) = Hyoka(0) For p = 0 To 6 Syukei(0, p) = Syukei(n, p) (5) Syukei(n + 1, p) = Syukei(0, p) Next p Else Exit For End If Next n Next m 解答 (1) Syukei(g, 0) = Syukei(g, 0) + Syukei(g, r) (2) TextBox2.Text = Hyoka(g) (3) Syukei(g, r) (4) Syukei(n, 0) < Syukei(n + 1, 0) (5) Syukei(n, p) = Syukei(n + 1, p)