「プログラミング概論I」プログラミング課題(2002年度)


以下の課題のうち、学籍番号の下1桁と一致する番号の課題(下1桁が0の者は 課題10)を行い、レポートしなさい。
  1. レポートはA4片面の用紙を用い、最初のページの右上に氏名と学生番号、 提出日を記入すること。
  2. LaTeX を使って、レポートを作成すること。
  3. 2枚以上になる場合には、用紙の左上をホチキスで綴じること。
  4. 関数のインターフェイスは、課題に従うこと。
  5. 関数の中で入出力を行ってはならない。
  6. プログラムのリストを印刷して付けること。
  7. プログラムの動作結果を添付すること。
  8. プログラムの説明を記述すること。
  9. 他人のプログラム、レポートを写したと判定されたものは、不合格とする。
  10. 提出は、7 月12 日、午後3 時までに、学科レポートボックスへ。
  11. LaTeX の使い方については、次のURL を参考に。

課題

  1. 整数配列に与えられた数値を、大きい順あるいは小さい順に 泡立ち法で並べかえる関数bubbleを作成し、動作を 確認しなさい。
    	int bubble(int data[], int n, int k)
    	
    配列dataはデータを、nはデータ数を表す。k=0 の場合、大きい順に、k=1の場合、小さい順に並べるとする。 正しく動作した場合には、1 を、それ以外の場合には0 を返す。
  2. 与えられた文字列strの指定した文字aを別の指定 した文字bに置き換える関数を作成し、動作を確認しなさい。
    	int tr(char* str, char a, char b)
    	
    戻り値は、置換を行った数を返すとする。
  3. n個の相対頻度が配列(data)で与えられた場合、 それらを規格化し、元の配列に書き込む関数を作成し、動作を確認 しなさい。
    	int normalize(double data[], int n)
    	
    正しく動作した場合には、1 を、それ以外の場合には0 を返す。
  4. 文字列strの中(終端のNULLを除く)で、文字コードが 最も大きい文字を返す関数を作成し、動作を確認しなさい。
    	char maxcode(char* str)
    	
    ただし、この関数は、再帰的に定義され、文字列先頭とそれ以外 だけの比較を再帰的に繰り返すこと。
  5. 文字列strの中の、指定された文字aのうち最初に 現れたものを文字列str2に置き換えた文字列へのポインタを返す 関数を作成し、動作を確認しなさい。
            char* repstr(char* str, char a, char* str2)
            
  6. 正整数nが素数ならば1 を、素数でないならば0 を返す 関数を作成し、動作を確認しなさい。
            int isprime(int n)
            
  7. 文字列strn進数であるとして、その10進での 値を返す関数を作成し、動作を確認しなさい。ただし、n が10より大きい場合にも対応できること。
            int q2d(char* str, int n)
    	
  8. 10進整数dn進数に変換する関数を作成し、動作を確 認しなさい。ただし、nが10より大きい場合にも対応できること。
            char* d2q(int d, int n)
    	
    戻り値は、変換されたn進数を表す文字列とする。
  9. 文字列strを空白で区切って、各文字列を文字列の配列 listに格納する関数を作成し、動作を確認しなさい。
    	int str2list(char* str,char** list)
    	
    戻り値はlistの要素数とする。
  10. 文字列strが回文である場合1 を、そうでない場合0 を 返す関数を作成し、動作を確認しなさい。
    	int circularletter(char* str)