情報処理Ⅱ 2005年1月25日(火) レポート課題2の解説.

Slides:



Advertisements
Similar presentations
N クイーン問題 N×N のチェス盤の上に、将棋の飛車と角 行の動きを同時にできる駒(クイーン) をお互いに動きを妨げないように N 個置 け。
Advertisements

第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
模擬国内予選2013 Problem F テトラ姫のパズル 原案:須藤 解答:大友、須藤 解説:須藤.
オブジェクト指向言語・ オブジェクト指向言語演習 中間試験回答例. Jan. 12, 2005 情報処理技術基礎演習 II 2 オブジェクト指向言語 中間試験解説 1  (1) 円柱の体積(円柱の体積 = 底面の円の面積 x 高さ) を求めるプログラムを作成しなさい。ただし、出力結果は、入 力した底面の円の半径.
Problem J: いにしえの数式 問題作成・解説: 北村 解答作成協力: 八森.
情報基礎演習I(プログラミング) 第9回 6月22日 水曜5限 江草由佳
3次元nクイーン問題の 解に関する研究 論理工学研究室 伊藤精一
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
連続系アルゴリズム演習 第2回 OpenMPによる課題.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
プログラミング基礎I(再) 山元進.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
演習00-0 “Hello,world![改行]”を表示するプログラムを作成せよ. 1 1.
プログラミングができるようになるには…. 一週間に1回では無理! 自分の力でできるだけがんばる
数値計算及び実習 第3回 プログラミングの基礎(1).
問題作成・解説: 北村 解答作成協力: 小西・松本
システムプログラミング 第5回 情報工学科 篠埜 功 ヒアドキュメント レポート課題 main関数の引数 usageメッセージ
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
文字配列の課題1 解説 /* a */ #include <stdio.h> main( ) { int i;
C言語 配列 2016年 吉田研究室.
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
第8回 プログラミングⅡ 第8回
第6章 2重ループ&配列 2重ループと配列をやります.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
プログラミング論 II 電卓,逆ポーランド記法電卓
スクリプト言語を用いたPHITSの連続実行
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
ちょっとした練習問題① 配列iroを['R', 'W', 'R', 'R', 'W' , 'W' , 'W']を宣言して、「W」のときの配列の番号をprintfで表示するようなプログラムを記述しなさい。
第10回関数 Ⅱ (ローカル変数とスコープ).
後期中間試験練習問題 12月3日(月)9:00~ 第3演習室.
アルゴリズムとプログラミング (Algorithms and Programming)
前回の練習問題.
第9回関数Ⅰ (簡単な関数の定義と利用) 戻り値.
復習 前回の関数のまとめ(1) 関数はmain()関数または他の関数から呼び出されて実行される.
Nakano School of Business 経営情報ビジネス科 【 C言語入門(Test2)】
デジタル画像とC言語.
情報処理概論Ⅰ 2007 第10回 2007/6/27 情報処理概論Ⅰ 第10回.
地域情報学 C言語プログラミング 第1回 導入、変数、型変換、printf関数 2016年11月11日
情報処理Ⅱ 第14回 2006年1月23日(月).
岩村雅一 知能情報工学演習I 第12回(C言語第6回) 岩村雅一
3次元Nクイーン問題の 解の存在の検証 07-1-037-0106 前波 大貴 情報論理工学研究室 宜しくお願いします。
C言語 はじめに 2016年 吉田研究室.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング入門 電卓を作ろう・パートI!!.
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
ウェブデザイン演習 第6回.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
情報処理Ⅱ 第7回 2004年11月16日(火).
情報処理Ⅱ 2005年10月28日(金).
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
コンパイラ 2012年10月11日
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第12回(後半第6回) 岩村雅一
情報処理Ⅱ 2006年11月8日(金).
情報処理Ⅱ 2007年2月2日(金).
情報処理Ⅱ 2005年11月25日(金).
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
情報処理Ⅱ 第9回:2003年12月16日(火).
情報処理Ⅱ 小テスト 2005年2月1日(火).
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
第2章 数値の入力と変数 scanfと変数をやります.
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
プログラミング演習II 2003年10月29日(第2,3回) 木村巌.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
第1章 文字の表示と計算 printfと演算子をやります 第1章 文字の表示と計算.
第1章 文字の表示と計算 printfと演算子をやります.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
アルゴリズム ~すべてのプログラムの基礎~.
Presentation transcript:

情報処理Ⅱ 2005年1月25日(火) レポート課題2の解説

この解説の読み方 問題文 用意していた解答 別解 解説など 課題の所在 http://www.wakayama-u.ac.jp/~takehiko/ ipii2004/20041221/rook-queen.c.txt

設問1(1) このプログラムファイルはセミコロンが消去されているので,コンパイルに失敗する.セミコロンを補って,正しく動くようにしたとき,補ったセミコロンの数を答えなさい. 54個 前処理の行にはつかない. 関数の終わりの「}」のあとにもつかない. for文では,カッコの中にセミコロンがつく.

設問1(2) またその数であることを(第三者が)確認できる方法をひとつ挙げなさい. Emacsの置換機能(query-replace)で,; を ; に置き換える. [Esc] < [Esc] % ; [Enter] ; [Enter] ! セミコロン挿入前と挿入後の二つのファイルサイズを求め,その差を計算する. ファイルサイズを求めるコマンドは,wc. ファイルを読み込んでセミコロンの数を出力するプログラムを自作する. セミコロンを挿入した各行に,何番目のセミコロンか,コメントをつける.

設問2(1) これは何をするプログラムか,簡潔に記述しなさい. チェス盤にルークまたはクイーンの駒を,それぞれ当たることなく配置するプログラムである. チェス盤の一辺の長さおよび配置する駒の数は,定数TABLE_SIZEにより与えられる. 4×4の盤面に4個のルークを配置する方法は24通り,クイーンは2通りであることがわかる.

設問2(2) ルークの駒の動き,クイーンの駒の動き rook queen

設問2(3) ルークを,当たることなく4個配置した例 クイーンが配置できたならば,それをすべてルークに置き換えると,ルークの配置となる.逆は言えない. ルークは,3個まで置けたら,残り1個の位置は自動的に決まる.クイーンは,3個置いたものの,最後にどこにも置けないことがある. rook

設問3(1) cc -DTABLE_SIZE=6 -o rook-queen rook-queen.c を実行してから./rook-queenを実行すると何が出力されるか,説明しなさい. チェス盤の一辺の長さおよび配置する駒の数が変更され, 6×6の盤面に6個のルーク配置する方法とクイーンを配置する方法が出力される. 上のようにコンパイルすると,rook-queen.cの4行目の評価が(既にTABLE_SIZEが定義されているので)偽となり,5行目の定数定義が行われなくなる.

設問3(2) 盤面と配置の例 5×5にクイーンを 5個置く例 6×6にルークを 6個置く例 rook rook rook rook rook queen rook queen rook queen rook queen rook queen rook 5×5にクイーンを 5個置く例 6×6にルークを 6個置く例

設問3(3) 6を5に変えてコンパイル・実行をするとどうなるか,説明しなさい. ルークの配置の数は,TABLE_SIZEの階乗である. cc -DTABLE_SIZE=6 -o rook-queen rook-queen.c としたとき 6×6の盤面,ルークは720通り,クイーンは4通り cc -DTABLE_SIZE=5 -o rook-queen rook-queen.c としたとき 5×5の盤面,ルークは120通り,クイーンは10通り ルークの配置の数は,TABLE_SIZEの階乗である. クイーンの配置の数は,チェス盤のサイズが大きくなっても,必ずしも増えないことがわかる.

設問4(1) プログラムファイルの中で,除去可能なカッコ(「(」と「)」, 「{」と「}」,「[」と「]」のいずれか.ただし文字列中とコメント内を 除く)を見つけ,何行目のどこにあるかを解答しなさい. 省略できる「(」と「)」 87行目の左から3番目の「(」と,それに対応する「)」のみ省略できる.すなわち, if ((*(p->check))(p)) {  は if ((*p->check)(p)) {  と書ける. 演算子「->」は,「*」よりも優先順位が高いため.

設問4(2) 省略できる「{」と「}」 21行目の「{」と27行目の「}」 22行目~26行目は「一つの文」だから 22行目の「{」と24行目の「}」 24行目の「{」と26行目の「}」 37行目の「{」と39行目の「}」 48行目の「{」と52行目の「}」 49行目の「{」と51行目の「}」 65行目の「{」と67行目の「}」 ただし,上述のいずれの「{」と「}」も,省略しない習慣にするほうがよい.

設問4(3) 省略できる「[」と「]」 Cの文法上, 「[」と「]」を省略して同じ動作になることはない. このプログラムでは,95行目の「[]」を省略しても問題なくコンパイルでき,正しく動く. main関数の中で,argvを使用していないため.

気になったこと ステープラで右上を綴じているレポートがあった. 標準は「左上」. 標準的な綴じ位置 おかしな綴じ位置 情報処理Ⅱ レポート