情報科学演習 実習課題 2013.01.15

Back to text page


実習課題

  1. 値の並べ替え1

    以下のように配列を定義する.

    	    int ary[3] = {1, 2, 3};
    

    配列の先頭の要素と最後の要素を入れ換えて,配列の中身が3,2,1という順番 になるような処理を考えよ.

  2. 値の並べ替え2

    例題5.3を参考に,配列の要素の値を大きい順に並べ替える操作を行なうプログ ラムを考える.100以下の正の整数を乱数で5つ発生させ,それらを大きい順に並 べ変えよ.

     85  48  72  41  51
     85  72  51  48  41
    
    

    例えば,上の例のように現在配列 ary に順に85,48,72,41,51が入っ ているとします.このとき,配列の要素は以下の表のようになっています.

    添字01234
    要素8548724151

    まず,先頭の要素(0番目)と次(1番目)の要素,2番目の要素と順に比較し,もし 後の方が大きい場合には値を入れ換える操作を行うものとします.そのとき,比 較の操作は

        if(ary[i] < ary[j])
    
    

    のように2重ループの変数 i j を使用して行うものとし ます.そのとき, i j の値と配列の要素がどのように変 化していくのかを順に示すと,以下のようになります.

    変数ij添字 01234操作
    01要素8548724151そのまま
    02要素8548724151そのまま
    03要素 8548724151そのまま
    04要素 8548724151そのまま
    一巡目終了
    12要素8572484151入れ換え
    13要素8572484151そのまま
    14要素8572484151そのまま
    二巡目終了
    23要素8572484151そのまま
    24要素8572514148入れ換え
    三巡目終了
    34要素8572514841入れ換え
    四巡目終了

    このように i j が変化していくようなループを作れば完 了です.内側のループの繰り返しの回数が段々と減っているのは,次のように表 示するプログラムと同じです.

    ****
    ***
    **
    *
    
    

  3. 2次元配列の基本

    100以下の正の整数となる乱数を9つ発生させ,以下のように乱数を表示するとと もに,各行と列の和を表示するプログラムを作成せよ.

     10  69  18  97
     45  38  23 106
     28   8  30  66
     83 115  71
    

  4. 設問iiiの改造

    設問iiiを改造して,対角線上の斜めの3つの数の和を求めるようにせよ.

         99  28  94
         77  15  84
         95   3   6
    204             120
    

  5. 配列要素の書き換え

    5×5のマトリックス状に●もしくは○をランダムに表示する.出現確率はそれぞ れ1/2ずつとする.その操作を何度か繰り返し,○のところに●が出た場合には ●で置き換えるが,●の部分に○が出ても置き換えないとする.すなわち,段々 と●が多くなるようにし,全部が●になる まで繰り返すプログラムを作成せよ.

    ●●○○○
    ○●●○●
    ○○●●○
    ○●●○●
    ○○○●○
    
    ●●○○○
    ●●●○●
    ●○●●●
    ○●●○●
    ●●●●○
    
    ●●●●○
    ●●●○●
    ●○●●●
    ●●●○●
    ●●●●○
    
    ●●●●○
    ●●●○●
    ●○●●●
    ●●●○●
    ●●●●○
    
    ●●●●○
    ●●●○●
    ●○●●●
    ●●●●●
    ●●●●○
    
    ●●●●●
    ●●●○●
    ●●●●●
    ●●●●●
    ●●●●●
    
    ●●●●●
    ●●●○●
    ●●●●●
    ●●●●●
    ●●●●●
    
    ●●●●●
    ●●●●●
    ●●●●●
    ●●●●●
    ●●●●●
    

    上の例は,最初の1回分とそれ以後の修正分とでループを分けています.修正の 部分は while 文を使用して,全部黒丸になることを数値化してその数値 により終了の判定を行っています.
  6. 行列式の計算

    一桁の正の整数を9つ発生させることを行って,3行3列の行列を作る.次にその行列式の値を求めるプログラムを作成せよ.

    Matrix
    2 3 8
    6 3 2
    9 5 2
    
    Determinant = 34
    

    2次元の配列を使用します.行列式の計算は添字の規則性をしっかり見つけて下さい.2重の for 文を使用して左上から右下への積の和を計算し,再び別に2重の for 文で右上から左下への積を引いていくようにしてください.

    ちなみに,配列の添字の並びは行列式の計算では以下のようになることは工学系の学生には「常識」ですね.

    00*11*22 + 01*12*20 + 02*10*21
    - 02*11*20 - 01*10*22 - 00*12*21

Back to text page