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


以下の課題のうち、学籍番号の下1桁と一致する番号の課題(下1桁が0の者は 課題10)を行い、レポートしなさい。
  1. レポートはA4片面の用紙を用い、最初のページの右上に氏名と学生番号、 提出日を記入すること。
  2. レポートはワードプロセッサまたはLaTex を用いて、章や節への適切 に組版を行ないなさい。手書きや単純はテキストでのレポートは受理し ない。
  3. 2枚以上になる場合には、用紙の左上をホチキスで綴じること。
  4. 関数のインターフェイスは、課題に従うこと。
  5. 関数の中で入出力を行ってはならない。
  6. プログラムのリストを印刷して付けること。
  7. プログラムの動作結果を添付すること。
  8. プログラムの説明を記述すること。
  9. 他人のプログラム、レポートを写したと判定されたものは、不合格とする。
  10. 提出は、7 月18 日、午後3 時までに、学科レポートボックスへ。
  11. LaTeX の使い方については、次のURL を参考に。
  12. 佐賀大学では、Microsoft Office環境とほぼ同等の 環境がWindowsだけでなく、LinuxやSoralisでも使える StarSuit をライセンスしています。ライセンスの注意書きを良く読み、これを利用しても かまいません。

課題

  1. 文字列でIPアドレスとネットマスクが与えられた時、ネットワーク アドレスを文字列が返す関数を定義し、その動作を確認しなさい。
            char* netaddress(char* ipaddress,char* netmask)
            
  2. 0以上1未満の小数が与えられた時、その二進表現の文字列を返す 関数を定義し、その動作を確認しなさい。
            char* bstring(double a)
            
  3. 浮動小数点変数aが与えられた時、小数以下n桁に四捨 五入した文字列を返す関数を定義し、その動作を確認しなさい。
            char* round(double a, int n)
            
  4. 与えられた文字列の順序が逆の文字列を生成する関数を定義し、 その動作を確認しなさい。ただし、文字列を操作するシステムの関数 を使ってはならない。
            char* revstr(char* s)
            
  5. 与えられた文字列sの中で、最後に文字cが表れた 位置へのポインタを返す再帰的関数を定義し、その動作を確認しなさ い。もしも文字cが表れなかった場合には、NULLを 返しなさい。また、文字列を操作するシステムの関数を使っては ならない。
            char* index_last(char* s, char c)
            
  6. 与えられた文字列sn文字目からm文字目 からなる部分文字列を返す関数を定義し、その動作を確認しなさい。 ただし、文字列を操作するシステムの関数を使ってはならない。
            char* substring(char* s, int n, int m)
    	
  7. 文字をデータとして保持する構造体Listを考える。この リストの中から文字aを保持するノードを全て削除する 関数を定義し、その動作を確認しなさい。戻り値は、削除した ノード数とする。
            int delete_node(List &list,char a)
    	
  8. 文字をデータとして保持する構造体Listを考える。二つの リストをl1l2とするとき、l2の要素を l1の後ろに連結する関数を定義し、その動作を確認しなさい。 戻り値は、追加したノード数とする。また、l2の要素と l1に追加された要素は独立の存在するとする。
    	int concat(List &l1,List l2)
    	
  9. 文字をデータとして保持する構造体Listを考える。リストの 順番を反転させたリストへのポインタを返す関数を定義し、その 動作を確認しなさい。
    	List* reverse(List l)
    	
  10. 文字の集合を表す構造体Setを定義し、要素を追加する 関数を定義し、その動作を確認しなさい。追加した要素が 集合の新しい要素の場合1、既に存在していた場合0を返すとする。
    	int addset(Set &set,char a)
    	

参考(Visual C++の場合)