情報科学概論II(実習) 6回目

課題の提出〆切りは来週の13:00まで.課題提出はNUCTにログインして行うこと.
講義資料

今日やること


講義資料を参考にして、以下の各課題のプログラムをそれぞれ作成し,実行せよ. NUCTを使用した課題の提出については,各設問の指示に従うこと.
(実際にコンパイル・実行してエラーのないことを確かめて おくこと。)

課題6-1

次のmain関数にあるshift_string(c)は,文字配列cの最初の文字を最後に移動,他の文字を一文字ずつ左に移動させる関数である. (例の場合,"abcde"が"bcdea"に変換される.) shift_string関数を作成・追加し,プログラムを完成させよ. (自信のある人はshift_string関数を以下とは違う形にしても良い.) shift_string関数の部分のみNUCTで提出せよ.
#include <stdio.h>
#include <string.h>

void shift_string(char *c) /* 例 */
{
  int i,n;
  n=strlen(c); /*文字列を数える; ここではn=5となる*/
  char d[n]; /* ずらす作業のために用いる文字配列 */

  i = 0;
  while(c[i] !='\0' ){ /* 文字列の最後で無い場合はずらす作業をする */
  .......}
  .......
}

int main()
{ 
  char c[]="abcde";
        
  puts(c);    /* "abcde"が表示される */

  shift_string(c);

  puts(c);    /* "bcdea"が表示される */
        
  return 0;
}

課題6-2

以下の一連の作業に取り組め.
a.講義資料3.1章のプログラムを参考にして,[-1,1]の一様疑似乱数データを作成せよ.
b.作成したデータを読み込んで全データの平均を求めるプログラムを作成せよ. (講義資料3.2章のプログラムを参照)
c.あるデータの数の場合に,乱数データの作成から平均の書き出しまでを一括して行うシェルスクリプトを作成し, そのスクリプトを用いて計算を実行せよ.(講義資料4章参照)
d.データの数を 16 -> 32 -> 64 -> 128 -> 256 -> 512 を増加させていき, 平均がどのような値に漸近していくかを考察せよ.

上記のa-dに対応して,以下の4つを提出せよ.
a. 講義資料のサンプルプログラムにあった[0,1]の範囲では無く,[-1,1]の範囲にするためにどのような変更を施したかの具体的な説明.プログラムのソースを添付しても良い.
b.データを読み込んで全データの平均を求めるプログラム
c.データの数が64個の場合の一括作業のシェルスクリプト
d.データの数が 16, 32, 64, 128, 256, 512の場合の平均値とその考察

課題6-3 追加問題(必答では無いが取り組んだ場合は加点)

課題6-2で,データの数を16 -> 32 -> 64 -> 128 -> 256 -> 512増やす際の作業 までを一括して行うシェルスクリプトを作成し,提出せよ.