プログラミング実習II (2026) 課題

[E12] 第10章 ファイルと乱数

(E12_1)

[リスト 10.5] を参考に,特定の名前をもつファイルからの読み込みと書き出しをするよう,[T12] で作成したプログラムに変更を加えよ.

(E12_2)

[リスト 10.7] を参考にして,前問のプログラムを,fgets 関数と sscanf 関数を用いてデータを読み込むように書き換えよ.

(E12_3)

2個の整数がコマンドライン引数として入力される(例: ./a.exe 49 85)とき,それらの和を表示するプログラムを作成する.

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char *argv[] )
{
    if( argc != 3 ){
        printf("使い方: %s [int] [int] \n", argv[0] );
        exit(EXIT_FAILURE);
    }
    // 変換と計算の処理
    return 0;
}
(E12_4)

学生番号と得点のデータを,高得点順に表示するプログラムを作成せよ.

表示例:
  9024 98
  9007 97
  9003 95
     :
(E12_5)

0.0 ~ 1.0 の値をとる一様乱数を発生させ,統計量を計算せよ.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 不要な行はコメントアウトすること.

int main( void )
{

	srand((unsigned int)time(NULL));

	printf("RAND_MAX: %d \n", RAND_MAX);


    return 0;
}
(E12_6)

モンテカルロ法を用いて円周率 π を近似的に求めよ.

  1. 区間 [0.0, 1.0] 上の一様乱数を 2 個生成し,座標 (x, y) とする.
  2. その点が単位円の内部(x2 + y2 ≤ 1)に含まれるか否かを判定する.
  3. 試行を多数回繰り返し,「内部に入った回数 / 全試行回数」が π/4 に近づくことを利用して π を算出せよ.
(E12_7*)

確率 p で当たり,確率 1-p で外れるくじのシミュレーションを行え.

表示例( p = 0.5,実行のたびに結果は変わる.3個目の数字は各得点の割合,4個目の数字が2項分布の数値を指す):
------------------------------
 0    101  0.00101  0.000977
 1   1029  0.01029  0.009766
 2   4560  0.04560  0.043945
 3  11750  0.11750  0.117188
 4  20460  0.20460  0.205078
 5  24617  0.24617  0.246094
 6  20546  0.20546  0.205078
 7  11566  0.11566  0.117188
 8   4280  0.04280  0.043945
 9    994  0.00994  0.009766
10     97  0.00097  0.000977
------------------------------
(printf の書式は %2d, %5d, %.5f, %f)

表示例( p = 0.3,4 個目の数字が 2 項分布の数値):
------------------------------
 0   2838  0.02838  0.028248
 1  12171  0.12171  0.121061
 2  23300  0.23300  0.233474
 3  26677  0.26677  0.266828
 4  19978  0.19978  0.200121
 5  10299  0.10299  0.102919
 6   3648  0.03648  0.036757
 7    924  0.00924  0.009002
 8    153  0.00153  0.001447
 9     10  0.00010  0.000138
10      2  0.00002  0.000006
------------------------------
(printf の書式は %2d, %5d, %.5f, %f)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main( int argc, char *argv[] ){
    if( argc != 2 ){
        printf("使い方: %s [double] \n", argv[0]);
        exit(EXIT_FAILURE);
    }
    double p = atof( argv[1] );
    srand((unsigned int)time(NULL));

    // シミュレーションの実装

    return 0;
}