第11回資料 - 湘南工科大学 情報工学科 ホームページ

Download Report

Transcript 第11回資料 - 湘南工科大学 情報工学科 ホームページ

湘南工科大学
2014年1月21日
情報理論2
湘南工科大学情報工学科
准教授 小林 学
[プログラミング課題1] 授業ホームページの課題プログラムに対し,max と pos を
求める箇所を以下のようにMaxMatch()関数にしなさい.(変数は自分で考えること)
#include<stdio.h>
#define MADO 8
int Dat[2*MADO]={0,1,0,1,2,0,2,0,0,1,2,0,1,2,1,-1};
int Max, Pos; //追加(先頭は大文字.以下も同じ!!)
Page 2
int Icchicho(int n){ ・・同じ・・ }
void Shift(int n){ ・・同じ・・ }
void MaxMatch(void){
// 追加
ここへコピー!!
}
void main(void){
while(1){
max=0; pos=0;
for(i=0; i<MADO; i++){
}
}
・・同じ・・
}
ここの内容を
MaxMatch()関数にする
printf("(%d,%d,%d)\n",pos,max,Dat[MADO+max]);
if(Dat[MADO+max]==-1) break;
Shift(max+1);
LZ77符号プログラムにおける配列の初期化
Dat
0
0
1
0
2
0
3
0
4
0
5
0
中身を0にする
6
0
7
0
Page 3
8
5
9 10 11 12 13 14 15
2 4 1 2 5 4 3
ファイルから読み込む
中身を0にする
ファイルから読み込む
1バイトずつ c に読み込む
配列Datに c を挿入
[プログラミング課題2] 以下のプログラムを作成し,実行しなさい.
(注:課題1のプログラムは後で利用するので,とっておくこと)
1バイトずつ読み込む
Page 4
配列へのファイル読み込み関数 FileRead 作成
[例] 引数 start=11
Dat
0
4
1
1
2
2
Page 5
start
3
5
4
4
5
3
6
2
7
4
8
6
9 10 11 12 13 14 15
3 2
位置 start 以降にファイル
内容を読み込む関数
[プログラミング課題3] 以下のプログラムの???の箇所を追加し,
実行しなさい.
課題2を参考に,ここを作成!!
Page 6
[プログラミング課題4] 課題1のプログラムに,課題3のFileRead関数
を追加し,main関数を以下としなさい.
Page 7
(注)このプログラムは終了しない!
追加
追加
ここは自分で考えること!!
ファイルの終わりを検出するには以下を利用する
Page 8
 ファイル読み込み関数 fread の戻り値は,読み込んだシンボル数
 ファイルの終端の場合は,「0」を返す
[プログラミング課題5] 課題4のプログラムの FileRead 関数を以下のように修正
しなさい.(ちゃんとプログラムが終了するようになる)
ファイルの終端の場合「-1」を追加
[プログラミング課題6] 課題5のプログラムの画面出力を,ファイルにバ
イナリ形式で出力するプログラムを作成しなさい
追加
追加
追加.この関数を自分で作成すること
追加
Page 9
[プログラミング課題6のヒント]
Page 10
int 型の変数(4バイト)を
unsigned char 型(1バイト)
に変換(キャストという)
ここを考える!