明星大学 情報学科 2012年度 後期 情報技術Ⅱ 第8回 中間試験の解説 @ DENGINEER
本日 の メニュー 1.中間試験の結果報告 2.問題についての解説
1.木構造の応用(1) 四則演算式の解析 (4+2)×(3-1) 4 2 + 3 1 - × 4 2 + 3 1 - 4 2 +
2.解説(問題1 1-1)(1) 問題1 C言語 1-1 unsigned char moji_1; ・・・文字型 1-1 unsigned char moji_1; struct Kouzou { unsigned char code; unsigned char str[10]; }; struct Kouzou mk[3]; ・・・文字型 ・・・文字型 ・・文字型配列 構造体 ・・・構造体配列
2.解説(問題1 1-1)(2) 問題1 C言語 1-1 unsigned char moji_1; struct Kouzou { 1-1 unsigned char moji_1; struct Kouzou { unsigned char code; unsigned char str[10]; }; struct Kouzou mk[3]; 1 11 1 1 2 3 4 5 6 7 8 9 10 11 11 11
sizeof( struct Kouzou ) 2.解説(問題1 1-2) 問題1 C言語 1-2 int main( void ) { struct Kouzou ; //構造体 Kouzouのポインタ pkを宣言 pk = malloc( ); //動的にメモリを確保し、pkに割り当てる = 168; //pkのcodeに168を入れる printf( “pkのcodeその1 = %02x\n” , (3)と同じもの ); // pkのcodeを表示する printf( “pkのcodeその2 = %02X\n” , (3)と同じもの ); // pkのcodeを表示する free( ); //pkを解放する return ( 0 ); } (1) (2) (3) (4) *pk sizeof( struct Kouzou ) pk -> code pk
2.解説(問題1 1-3) 問題1 C言語 1-3 pk の code には 、10進表記の 168 が入っている 1-3 printf( “pkのcode その1 = %02x\n” , (3)と同じもの ); // pkのcodeを表示する printf( “pkのcode その2 = %02X\n” , (3)と同じもの ); pk の code には 、10進表記の 168 が入っている 16進に変換すると A8 となる
2.解説(問題2 2-1) 問題2 逆ポーランド記法 2-1 (1) 2+3-5×8 (2) 2+(3-5)×8 (3) (2+3-5)×8 問題2 逆ポーランド記法 2-1 (1) 2+3-5×8 (2) 2+(3-5)×8 (3) (2+3-5)×8 - + × 2 + × × - 8 2 3 5 8 - 8 + 5 3 5 2 3 2 3 + 5 8 × - 2 3 5 - 8 × + 2 3 + 5 - 8 ×
2.解説(問題2 2-2) 問題2 逆ポーランド記法 2-2 + - (1) 20_12_×_11_-_29_+ (2) 問題2 逆ポーランド記法 2-2 (1) 20_12_×_11_-_29_+ (2) 1_2_3_4_+_×_- (3) 10_2_3_+_÷_73_× 4 7 + 14 3 5 3 × + 11 240 12 229 29 258 -13 2 2 2 146 73 - × ÷ × + - 20 1 10
2.解説(問題2 2-3) 問題2 逆ポーランド記法 2-3 4 8 2 6 + + × (1) (2) 6 8 + 2 16 + 64 8 問題2 逆ポーランド記法 2-3 4 8 2 6 + + × (1) (2) 4 8 2 6 + × × 6 8 + + 2 16 + + 64 8 × 4 8 2 6 4
2.解説(問題3 3-1) 問題3 スタックとキュー 3-1 (1)stack (2)queue LINK リングバッファ LIFO 問題3 スタックとキュー 3-1 LINK リングバッファ LIFO PUSH FILA 先入れ後出し FIFA PULL 待ち行列 FILE FIFO LOLI ドーナツバッファ FILO 先入れ先出し (1)stack LIFO , PUSH , 先入れ後出し , FILO (2)queue リングバッファ , 待ち行列 , FIFO , 先入れ先出し
2.解説(問題3 3-2)(1) 問題3 スタックとキュー 3-2 ・・・入れた順番どおりに取り出す必要がある (1)速度差を吸収する 問題3 スタックとキュー 3-2 ・・・入れた順番どおりに取り出す必要がある (1)速度差を吸収する 先入れ先出し(FIFO) キュー(queue) (2)読み出し不能の間は、バッファから取り出して再生するだけ バッファが空になるまでは、連続して再生できる (音飛びしない) バッファサイズが、何秒分の再生データか 計算すればよい 256,000(byte) 176,400(byte/sec) ≒ 1.4512(sec)
2.解説(問題3 3-2)(2) (3)3通りの考え方で解説 その1 256kbyte 読み出しにかかる時間は 256,000(byte) ・ 再生 読み出し (3)3通りの考え方で解説 その1 256kbyte 読み出しにかかる時間は 256,000(byte) 4×176,400(byte/sec) ≒ 0.3628(sec) この間に再生されている分は 176,400(byte/sec)×0.3628(sec) ≒ 64,000(byte) 0.3628秒 読み出した時点で、さらに64,000byte 使えることになる 64kbyte 読み出しにかかる時間は 64,000(byte) 4×176,400(byte/sec) ≒ 0.0907(sec) よって、 0.3628 + 0.0907 ≒ 0.4535(sec)
2.解説(問題3 3-2)(3) (3) その2 読み出し時間をt(sec)と置くと、 読み出せるデータ量は ・ 再生 読み出し (3) その2 読み出し時間をt(sec)と置くと、 読み出せるデータ量は (4×176,400) ×t(byte) この間に再生されるデータ量は、 176,400 ×t(byte) 読み出し部がバッファを1周してから、再生部に追いつくのは、 (4×176,400) ×t= 176,400 ×t+256,000 と、なるので、tについて解くと t ≒ 0.4837(sec)
2.解説(問題3 3-2)(4) 再生された部分は、再利用可能 (3) その3 再生しながらなので、4倍速で読み出す間に 1倍速で再生される ・ 再生 読み出し (3) その3 再生しながらなので、4倍速で読み出す間に 1倍速で再生される 再生された部分は、再利用可能 t秒で バッファに溜まる分は、 (4×176,400)×t - 176,400 ×t =(3×176,400)×t(byte) バッファサイズは、256kbyte なので、 (3×176,400)×t= 256,000 t ≒ 0.4837(sec)
2.解説(問題4 4-1)(1) 問題4 木構造 4-1 (1)2分木 ・・・・・・○ (2)2分探索木 ・・・・○ (3)完全2分木 問題4 木構造 4-1 ア 4 2 9 15 12 17 8 10 (1)2分木 ・・・・・・○ (2)2分探索木 ・・・・○ (3)完全2分木 ・・・・× (4)木構造 ・・・・・・○ (5)ヒープ木 ・・・・ × (6)ハフマン木 ・・・ ×
2.解説(問題4 4-1)(2) 問題4 木構造 4-1 (1)2分木 ・・・・・・○ (2)2分探索木 ・・・・ × (3)完全2分木 問題4 木構造 4-1 イ 5 1 8 9 13 12 (1)2分木 ・・・・・・○ (2)2分探索木 ・・・・ × (3)完全2分木 ・・・・ ○ (4)木構造 ・・・・・・○ (5)ヒープ木 ・・・・ × (6)ハフマン木 ・・・ ×
2.解説(問題4 4-1)(3) 問題4 木構造 4-1 (1)2分木 ・・・・・・ × (2)2分探索木 ・・・・ × (3)完全2分木 問題4 木構造 4-1 ウ 3 1 2 5 6 7 4 8 (1)2分木 ・・・・・・ × (2)2分探索木 ・・・・ × (3)完全2分木 ・・・・× (4)木構造 ・・・・・・○ (5)ヒープ木 ・・・・ × (6)ハフマン木 ・・・ ×
2.解説(問題4 4-1)(4) 問題4 木構造 4-1 (1)2分木 ・・・・・・ × (2)2分探索木 ・・・・ × (3)完全2分木 問題4 木構造 4-1 エ 7 6 4 8 10 9 2 1 3 5 (1)2分木 ・・・・・・ × (2)2分探索木 ・・・・ × (3)完全2分木 ・・・・× (4)木構造 ・・・・・・ × (5)ヒープ木 ・・・・ × (6)ハフマン木 ・・・ ×
2.解説(問題4 4-1)(5) 問題4 木構造 4-1 (1)2分木 ・・・・・・○ (2)2分探索木 ・・・・○ (3)完全2分木 問題4 木構造 4-1 オ 10 13 6 15 12 8 (1)2分木 ・・・・・・○ (2)2分探索木 ・・・・○ (3)完全2分木 ・・・・ ○ (4)木構造 ・・・・・・○ (5)ヒープ木 ・・・・ × (6)ハフマン木 ・・・ ×
2.解説(問題4 4-1)(6) 問題4 木構造 4-1 (1)2分木 ・・・・・・○ (2)2分探索木 ・・・・ × (3)完全2分木 問題4 木構造 4-1 カ 5 2 4 11 12 10 8 7 6 3 1 9 (1)2分木 ・・・・・・○ (2)2分探索木 ・・・・ × (3)完全2分木 ・・・・ ○ (4)木構造 ・・・・・・○ (5)ヒープ木 ・・・・ ○ (6)ハフマン木 ・・・ ×
2.解説(問題4 4-2) 問題4 木構造 4-2 1 , 2 , 5 , 8 , 13 , 18 , 21 1 5 2 13 21 18 8
2.解説(問題5 5-1) 問題5 線形リスト 5-1 ● 1 ● 2 ● 2 ● 8 ● 13 ● 18 ② ① ● 5
2.解説(問題5 5-2) 問題5 線形リスト 5-2 ● ● ● ● ● ● ● 1 2 8 13 18 5 0x01 0x00 1 問題5 線形リスト 5-2 0x9000 0x9004 0x9008 0x900C 0x9010 ● 1 ● 2 ● 8 ● 13 ● 18 0x0001 0x0002 0x0008 0x000D 0x0012 ● 5 0x9014 0x0005 struct singly_list { short value; struct singly_list *next; }; value *next 0x01 0x00 ● 1 0x04 0x90
@