忍者ブログ
盛大な独り言日記・自分用メモ2010.11.17~
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ものそい色々修正したのでこれだけじゃないかもしれませんが…
同じ文字が出てくる原因は、2gramファイル内に該当文字がある場合の処理関数内での、if文の条件がおかしかったのが原因でした。
point→num(開始文字の回数以下の乱数。0<=point<開始文字の回数)
no→初期値0,開始文字と2gramファイルの文字を比較して一致したときに1ずつ増える。
(開始文字に指定された文字がファイル内に存在すればn=n+1)
(最初の入力文字以外の連鎖は必ずファイル内に存在するはず?)
の2つ変数があって

forループ(2gramファイルの全体の行数分の回数){
①開始文字とファイル内の文字の行の頭を比較して、一致したらno+1をする
(最大で開始文字で始まる2gramの数までnが増える)

②noとpointを比較して、一致したら
  1、その行の二文字を2gramファイルから取り出して格納する。
  2、forループをぬける

}

という順番で処理をしたときに、
①で文字が見つかればno+1となり、初期値が0のため noの値の範囲はno>=1になる。そうすると
②の比較をするさいにpointが0だった時、絶対にif文の条件が満たされなくなってしまう。

②が満たされないとforループの条件がすむまでループを抜けられなくなり、
その結果、point=0のときに2行目の頭を選んでくるようになってしまってた…ていうことでいいのかな…

なので②の条件式を、no==pointからno==point+1に書きかえるとうまく動くようになりました。
pointの元々の範囲は0から開始文字未満なので、たぶんこれで逆に大きすぎるとかの問題は起こらないはず…

いったん記事保存
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
[51]  [50]  [49]  [48]  [47]  [46]  [45]  [44]  [43]  [42]  [41
プロフィール
 たごさく(@Ta56)
カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
最新CM
最新記事
最新TB
バーコード
ブログ内検索
最古記事
Admin / Write
忍者ブログ [PR]