第4講 if文(もしもボックスの世界)
第4話 100以下のランダムなデータを発生させて40人の合否を判定するソフト
実行画面が
各教科の点数をキーボードから入力して下さい。
出席番号=1
国語=42
社会=68
数学=35
理科=1
英語=70
合計点=216
出席番号1番は不合格

出席番号=2
国語=25
社会=79
数学=59
理科=63
英語=65
合計点=291
出席番号2番は不合格
    ・
    ・
    ・
出席番号=39
国語=29
社会=94
数学=49
理科=84
英語=8
合計点=264
出席番号39番は不合格

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

(ランダムデータは毎回変わります。)
となるソフトのコード例
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
  class Program //初心者はお呪い=決まり事と思い一切気にしない
  {
    static void Main(string[] args) //私は社長だ。
    {
      int a, b, c, d, e, g; //a:国語 b:社会 c:数学 d:理科 e:英語 の得点 g:5教科合計得点
      int s; //出席番号
      
Random r = new Random();
      for (s = 1;s <= 40;s++) 
      {
        Console.WriteLine("各教科の点数をキーボードから入力して下さい。");
        Console.WriteLine("出席番号={0:d}", s);
        //以下各教科得点ランダム発生
        a = r.Next(100) + 1; //国語の得点発生
        b = r.Next(100) + 1; //社会の得点発生
        c = r.Next(100) + 1; //数学の得点発生
        d = r.Next(100) + 1; //理科の得点発生
        e = r.Next(100) + 1; //英語の得点発生

        //以上各教科得点ランダム発生
        //以下各教科得点表示
        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);
        //以上各教科得点表示
        g = a + b + c + d + e; //合計点算出
        Console.WriteLine("合計点={0:d}", g); //合計点表示
        if (g >= 300) Console.WriteLine("合格"); else Console.WriteLine("不合格"); //合否結果の表示
        Console.WriteLine();
        Console.WriteLine();
      }
    }
  }
}
皆さん、コンソール画面を上から下まで見て下さい。
ほとんどが不合格であることがわかります。
ランダムにデータを発生させる場合300点以上という合格基準は厳しいということがわかります。
いったい合格倍率はどのぐらいでしょうか。
ソフトを改良して合格倍率=受験者数÷合格者数を出すソフトにしましょう。
    ・
    ・
    ・
出席番号39番は不合格

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

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


答えがわかってしまうと面白くないですから、
*.*
と伏せてありますが、小数第1位まで求めて下さい。
合格者数をカウントする整数型の変数
      int cn = 0; //合格者をカウントする変数
を宣言すると同時に0に初期化しておくとよいでしょう。
ただし、40/cnは整数になってしまいます。
整数型同士の計算結果は整数に丸められてしまうからです。
これを強制的にfloat型に変更するには、
(float)40/cnとします。


いったい何倍程度になるのでしょうか。
楽しみですね。
尚、
        if (g >= 300) Console.WriteLine("合格"); else Console.WriteLine("不合格"); //合否結果の表示
は合格の場合に2つの命令文を実行しなければなりませんから、
        if (g >= 300)
        {
          cout << "合格" << endl;
          ・・・
        }
        else
        {
          cout << "不合格" << endl;
        }
としておきましょう。
基本命令文が1つしかないときは、1文でも良いですが、
肯定部分でも否定部分でも命令文が複数になるときには、
上のようにすることをおすすめします。
ただし、
     if(*){A;B;C;} else {P;Q;}
のような書き方は認められています。
つまり、命令文が複数でも1文で書くことも出来ます。
ですが、わかりやすさを優先するなら、
    if(*)
    {
      A;
      B;
      C;
    }
    else
    {
      P;
      Q;
    }
の方が断然良いと思います。

第3話へ   第5話へ
 
002

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

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