みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

この内容のプログラミング教えてください、言語はexeファイルを作れるもので

 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”NEWテキスト”と呼ぶ)に書き込み保存するプログラミングのソースコード教えてください。
 英文のテキストファイルを指定すると、その英文のテキストファイルを開き、ファイルの最初から英単語を探し始め最初の英単語を認識すれば、その英単語を消し、NEWテキストに書き込み(NEWテキストにすでに書き込まれてる単語でなければ)、改行を一回する。そしてまた英文のテキストファイルの最初から英単語を探し始め、見つかると消去し、NEWテキストの全単語と重複がなければ、書き込み一回改行。これを英文のテキストファイルが空白になるまで続け、英文のテキストファイルは閉じ、NEWテキストも保存し閉じる。
 実際の内容の結果は次のようになる。


---------------------------------------------------------------------------------------------------
英文.txt

I was wondering if my plant needs friends, do I need to get more of the same plant so it can get polinated and produce peppers?


----------------------------------------------------------------------------------------------------
new英文.txt

I
was
wondering
if
my
plant
needs
friends,
do
need
to
get
more
of
the
same
so
it
can
polinated
and
produce
peppers?


-------------------------------------------------------------------------------------------------------

ポイント

1 ひとつの英単語の認識は
     英単語の始まりの認識条件 →  文字の前に改行か全角、半角スペースがある
     英単語の終わりの認識条件 →  文字の後ろが全角、半角スペースか改行がある
   で行いその後その単語を消去し、NEWテキストの重複チェックに移る。

2.NEWテキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう)
   例)Apple と apple
   では違うものとしNEWテキストに書き込みされる。
   また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。
   例)get! と get
つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。

3. Windowsで動作するexeファイル形式で、GUIであること。プログラムを実行した時の見た目は、英文のテキストファイルの名  前を表示するテキストフィールド?とその横に参照ボタンと、開始ボタンと、プログラムの終了ボタンがあるだけのシンプ  ルなものでいい。開始ボタンを押したときにNEWテキストは新規作成される。
  NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけた  ものでいい。
   例)英文.txt → new英文.txt

以上のポイントを踏まえてどうプログラムすればいいか教えてください。専門書をもってないのでできれば全ソースコードを載 せてほしいです。お願いします。

投稿日時 - 2008-05-25 21:20:40

QNo.4050240

困ってます

質問者が選んだベストアンサー

ANo.1 = Interest です。
日常使う英単語収集ツールを作りたいということで了解しました。
私のメインはC言語ですが、ちょっとしたツールを作るときはVBやC#を使ってます。

> Windowsで動作するexeファイル形式で、GUIであること。

これは VBを使うということですでに解決。VBプログラムの作り方は、適当な入門サイトを見ながらやれば半日くらいで覚えられると思います。テキストファイルの読み込み、書き出し方くらいまで覚えれば十分でしょう。(ANo.3の方のおっしゃる、TextReader, TextWriterを使います。)

単語の認識に関しては、「作りやすそう」とか変な気を回さなくてもそういう道具がそろっています。(それが String.Splitメソッド)
私ならこの単語に分けた後、graces5368さんの考えているようにいちいちファイルに落とさず、HashTable を使ったほうが楽にできると思います。HashTableは「名前(キー)と値」を組にして記憶する仕組みで、.NETにもあります。
参考 http://www.atmarkit.co.jp/fdotnet/dotnettips/125hashtable/hashtable.html

HashTableのキーに単語を、値に出現回数を入れると、単語の出現頻度を知りたくなったときに便利なんじゃないかと。
(HashTableはCollectionと呼ばれる「仕組み」の一種です。)

プログラムの最後にHashTableの中身をファイルに書き出して終わり。

投稿日時 - 2008-05-26 12:57:31

補足

ありがとうございます。JavaApplet
しか触ったことがないので無理です。
こんなプログラムベクターにないですか?

投稿日時 - 2008-05-26 19:01:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

.NET Fremeworkをフルに活用してやるのでしょうか
または、単語の分割や検索などを自力でやるのでしょうか
それによりプログラミング方法は異なりますよ

フル活用なら
TextReader,Collection,TextWriter等のクラスと String.Splitメソッド
を使えば出来ますよ

ファイルが固定で無いならOpenFileDialog,SaveFileDialogでユーザーに選択させるようにしましょう

# カテゴリも VisualBasicにした方がいいでしょう

投稿日時 - 2008-05-26 08:52:22

補足

ありがとうございます。初心者で無理です。

投稿日時 - 2008-05-26 19:00:59

ANo.2

http://blog.goo.ne.jp/oshietegoo/c/2fd47a0436464f7e861d622ad803e8ab
■丸投げ・依頼
当サイトは、質問と回答の形式で会員の方同士の助け合いによる情報交換の場として運営しておりますが、他の会員に回答を義務づけ、あるいは何かを依頼してやってもらうというような場ではございません。従いまして、課題やレポートを解いたり作成したりする上での疑問点や、外国語の翻訳、プログラム作成時の疑問点などに関する質問について、課題文や条件のみを丸写しにした上で「この問題の回答を教えてください/翻訳してください」「これを作ってください」など回答者に丸投げで依頼するような質問は、削除・編集の対象とさせていただきます。
こういった質問については、ご自身である程度課題を解こうとしていただいた上で、疑問点や問題点、お困りの点を明確にして投稿いただきますようお願いいたします。

投稿日時 - 2008-05-25 23:31:48

補足

すいません。初心者な者で。

投稿日時 - 2008-05-26 03:59:49

ANo.1

パッと見た感じ、学生さんの課題か何かでしょうか?
課題なら、自力でやらなきゃ意味ないですよ、とお帰りいただきたい。

課題じゃなかったとして、ですよ。
graces5368さんは、プログラミングに関してどれくらいまでならわかりますか?

ご質問の内容からして、開発環境を持っていないのではないかと。
GUIの作り方なんて開発環境依存ですし、GUIを使ったプログラムのソースコードは一般的には単一ファイルではないので、ここに載せて「はいどうぞ」と動くものではありません。

まずは開発環境が決まらないとどうしようもないので、何を使うか決めてください。無償で使える開発環境、いくつかありますから。

投稿日時 - 2008-05-25 21:59:53

補足

ありがとうございます。
Visual Basic 2008 Express Edition
を使います。

課題ではありません。日常使う英単語効率よく集めたいだけです
C言語じゃないですがわかります?

投稿日時 - 2008-05-26 03:56:12

あなたにオススメの質問