プログラミング実習II (2026) 応用課題
英語の慣用的な用法を知るには,大量の英文中に現れる単語について,その前後に使われる単語を知ることが有用である.そのためには,与えられた英文を単語単位に分割し,次いで以下のような処理がその基礎となる.
この表を見れば,ある単語の前後に使われる単語の傾向を知ることができる.
以上の説明をもとに,以下の(課題 A_1)~(課題 A_2)を解け.なお,両課題とも入力に用いる英文テキストファイルは XA_1.txt を利用すること.
与えられた英文テキストファイルを読み込み,その英文に含まれている単語数を数えるプログラムを作成せよ.
与えられた英文テキストファイルを読み込み,その英文に含まれている3連語を辞書順に並べ換えて出力するプログラムを作成せよ. ただし,並べ換えに当たっては,単語の頭3文字を考慮し,第4文字以降は順序決定に無関係としてよい.
,.";:- などは,直前の単語の一部とみなす).
例: "This is a pen. That is an apple." の場合
(空白 This is)(This is a)(is a pen.)(an apple. 空白)struct w_triple
{
char pre[30];
char wrd[30];
char ant[30];
};
上記のような構造体を定義し,この型 struct w_triple の配列 word[300] を定義して利用せよ.
次に,word[ i ].wrd の辞書順で並び換えればよい.
並べ換えの際は,「単語の頭3文字」のみを考慮し,それよりも短い単語には '空白' を後に付け足して,'空白' はアルファベットより前にあると考えよ.また大文字,小文字の違いは無視せよ.
word[i].wrd に順番に入れて,word[i].pre, word[i].ant は空のまま,まずは構造体の配列 word[
] を作る.この配列では,文中で前後にある単語が,配列の前後の要素のメンバ word[i-1].wrd, word[i+1].wrd
に含まれているので,これらの要素から取り出して word[i].pre, word[i].ant を補充してもよい.)
例文の場合の最終結果: ( pen. 空白 That ) ( is a pen. ) ( is an apple. ) ( an apple. 空白 ) ・・・・ ( 空白 This is )
WWWサイトが存在するサーバにある「アクセスログ」を解析することで,どのページへのアクセスが多いのか,アクセスが集中する時間帯はいつなのか等の情報を知ることができる.
アクセスログ(acc20071120b.txt)を解析し,下記の内容すべてを出力するプログラムを作成せよ.
なお,それぞれのアクセスランキングの表示はテキスト p.371 の実行結果例のように行うこと.
アクセスログ(acc20071120b.txt)を解析し,下記の内容すべてを出力するプログラムを作成せよ.