第4講 If文(もしもボックスの世界)
第5話 100以下のランダムなデータを発生させて40人の合否を判定すると同時に合格倍率を表示するソフト
実行画面が
    ・
    ・
    ・
出席番号39番は不合格

出席番号=40
国語=22
社会=11
数学=18
理科=14
英語=15
合計点=80
出席番号40番は不合格

合格倍率は*.*倍です。

(C言語入門から借用しているためにランダムデータは異なります。)
となるソフトのコード例
Module Module1

  Sub Main() '私は社長だ。
    Dim s, a, b, c, d, e, g As Integer 's:出席番号 a:国語 b:社会 c:数学 d:理科 e:英語 g:合計
    Dim cn As Integer '合格者をカウントするカウンター
    cn = 0
    Console.WriteLine ("各教科の点数をキーボードから入力して下さい。")
    For s = 1 To 40
      Console.WriteLine("出席番号={0:d}", s) '出席番号表示
      '以下各教科得点ランダム発生
      a = Int(Rnd() * 100) + 1
      b = Int(Rnd() * 100) + 1
      c = Int(Rnd() * 100) + 1
      d = Int(Rnd() * 100) + 1
      e = Int(Rnd() * 100) + 1
      '以上各教科得点ランダム発生
      g = a + b + c + d + e '合計点算出
      '以下各教科得点、合計点、合否結果の表示
      Console.WriteLine("合計点={0:d}", a) '国語得点の表示
      Console.WriteLine("合計点={0:d}", b) '社会得点の表示
      Console.WriteLine("合計点={0:d}", c) '数学得点の表示
      Console.WriteLine("合計点={0:d}", d) '理科得点の表示
      Console.WriteLine("合計点={0:d}", e) '英語得点の表示
      Console.WriteLine("合計点={0:d}", g) '合計点の表示
      Console.Write("出席番号{0:d}番は", s)
      If g >= 300 Then
        Console.WriteLine ("合格")
        cn += 1
      Else
        Console.WriteLine ("不合格") '合否結果の表示
      End If
      Console.WriteLine()
    Next
    Console.WriteLine("合格倍率は{0:f1}倍です。", 40 / cn)
  End Sub

End Module


倍率の答えは4.4倍です。
40程度のデータ数では誤差が大きいので、
データ数を1000にして実験し直すと、
4.2倍です。

合計300点は100点満点に換算すると、
60点です。
そして、ランダムの得点を発生させたとき、
そのデータは正規分布になります。
正規分布というのは、偏差値のデータ分布と同じです。
ということは、今回の合格倍率の算出は、
偏差値60以上をとれる人が何人に1人かと同じです。
つまり、偏差値60以上をとれる人は約4.2人に1人しかいないのです。
データ数を同じく1000にして、
合格条件を400点すなわち偏差値80とすると、合格倍率がいくつになりますか。
皆さん実験してみて下さい。
30行下に示します。
























答え
001
合格倍率は166.7倍です。
ということは偏差値80以上とれる人は約167人に1人しかいないのです。
因みに合格条件を425点以上すなわち偏差値85以上としデータ数を10000にして実験すると、
002
370.4倍です。
東大の偏差値がだいたい85ですから、
東大に入れる人は370人に1人しかいないということになりますね。

さて、次の課題に入りましょう。
If文で今回は合否のみの2段階判定でしたが、
If文をうまく使うと、3段階判定・4段階判定・5段階判定なども可能です。
例えば、5教科合計得点が
200点未満          ***努力が必要です。
200点以上300点未満   ***普通です。
300以上            ***頑張りました。
の3段階判定です。
    ・
    ・

出席番号=33
国語=11
社会=60
数学=25
理科=38
英語=49
合計点=183
出席番号33番は努力が必要です。

出席番号=34
国語=84
社会=96
数学=42
理科=3
英語=51
合計点=276
出席番号34番は普通です。

出席番号=35
国語=92
社会=37
数学=75
理科=21
英語=97
合計点=322
出席番号35番は頑張りました。
    ・
    ・
これを実現するためには
  If p then
     A
  Else
    If q Then
       B
    Else
       C
    End If
  End If
のようにします。
pとqの内容とA、B、Cを考えて下さい。
これは、条件pを満たすならAを
条件pを満たさずに条件qを満たすならBを
条件qを満たさないならCを実行しなさいということになります。

尚、データ数は40に戻しておきましょう。


第4話へ   第6話へ
 
002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ