• ベストアンサー

この内容のプログラミング教えてください、言語は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 以上のポイントを踏まえてどうプログラムすればいいか教えてください。専門書をもってないのでできれば全ソースコードを載 せてほしいです。お願いします。

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

  • ベストアンサー
  • Interest
  • ベストアンサー率31% (207/659)
回答No.4

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の中身をファイルに書き出して終わり。

graces5368
質問者

補足

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

その他の回答 (3)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

.NET Fremeworkをフルに活用してやるのでしょうか または、単語の分割や検索などを自力でやるのでしょうか それによりプログラミング方法は異なりますよ フル活用なら TextReader,Collection,TextWriter等のクラスと String.Splitメソッド を使えば出来ますよ ファイルが固定で無いならOpenFileDialog,SaveFileDialogでユーザーに選択させるようにしましょう # カテゴリも VisualBasicにした方がいいでしょう

graces5368
質問者

補足

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

  • gon987
  • ベストアンサー率16% (53/313)
回答No.2

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

graces5368
質問者

補足

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

  • Interest
  • ベストアンサー率31% (207/659)
回答No.1

パッと見た感じ、学生さんの課題か何かでしょうか? 課題なら、自力でやらなきゃ意味ないですよ、とお帰りいただきたい。 課題じゃなかったとして、ですよ。 graces5368さんは、プログラミングに関してどれくらいまでならわかりますか? ご質問の内容からして、開発環境を持っていないのではないかと。 GUIの作り方なんて開発環境依存ですし、GUIを使ったプログラムのソースコードは一般的には単一ファイルではないので、ここに載せて「はいどうぞ」と動くものではありません。 まずは開発環境が決まらないとどうしようもないので、何を使うか決めてください。無償で使える開発環境、いくつかありますから。

graces5368
質問者

補足

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

関連するQ&A

  • こんなプログラムVisual C++ 2005 で作れます?

    コマンドプロンプトで実行して ”ファイル名は?” と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は ”作成先は?” と聞いてきてフルパス(場所)を入力してエンターキーで終わり、 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”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テキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう)    例)Apple と apple では違うものとしNEWテキストに書き込みされる。また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。    例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 (2) Windowsで動作すること。NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけたものでいい。    例)英文.txt → new英文.txt

  • C言語 ファイル入出力について

    test.txtというテキストファイルに入力されている文字を読み込んでtest1.txtに7文字になったなら改行して2行目に書き込み、また2行目が7文字以上になったら3行目に書き込むというプログラムを作りたいのですがどうもうまくいきません。色々ネットで探したりしたのですがstrlenをうまく使うのかな~ぐらいしか見当はつきません・・・。 何かよいアドバイスをお願いします!m(_ _)m 例 test.txt --------------------------------- 私の一番好きな食べ物はリンゴです。 --------------------------------- ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ test1.txt ---------------------------------- 私の一番好きな 食べ物はリンゴ です。 ----------------------------------

  • テキストファイルを読み込んでソートするプログラム

    英文のテキストファイルを読み込んで、単語を一行に一単語ずつ並べた後、それをアルファベット順にソートして、同じ単語を消去したテキストファイルを作るプログラミングを作りたいと思っています。 しかしテキストファイルを読み込むという命令がよくわかりません。 isalpha()などを使ってプログラム内に打ち込んだ英文を単語ごとに分けるプログラムは出来たのですが、テキストファイル(.txt)はどうやって読み込めばいいんでしょうか? プログラムはGNOMEのXEmacsで作っていて、C言語です。

  • プログラムが作動しない

    コマンドプロンプトで実行して ”ファイル名は?” と聞いてきてテキストファイルのフルパス(場所)を入力してエンターキーで次は ”作成先は?” と聞いてきてフルパス(場所)を入力してエンターキーで終わり、 英文のかかれたテキストファイルから全英単語を重複なく順番に新しいテキストファイル(以下、”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テキストの重複チェックは同じ単語でも大文字と小文字ひとつでも違えば書き込みはOKとする(プログラムが楽なよう)    例)Apple と apple では違うものとしNEWテキストに書き込みされる。また同じ単語でも記号が含まれていても違う単語と判断し、記号付きのままNEWテキストに書き込む。    例)get! と get つまり小文字、大文字を区別して一致し、さらに文字数も一致しないと重複とみなされない。 (2) Windowsで動作すること。NEWテキストのファイル名は毎回入力しないでいいように、英文のテキストファイルのファイル名の先頭に"new" をつけたものでいい。    例)英文.txt → new英文.txt このプログラムはつぎのようになります ------------------------------------------------ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct tag_list_t{ int num; char **wordlist; }list_t; int list_add(list_t *list, char *word){ int i; for(i=0;i<list->num;i++) if(strcmp(list->wordlist[i], word)==0) return 0; list->wordlist=realloc(list->wordlist, sizeof(char*)*(list->num+1)); list->wordlist[list->num]=strdup(word); list->num+=1; return 1; } int main(void){ list_t list={0, NULL}; char fname_in[FILENAME_MAX], fname_out[FILENAME_MAX], word[1000+1]; char *find; FILE *fp_in, *fp_out; printf("”ファイル名は?”"); fgets( fname_in, FILENAME_MAX, stdin ); printf("”作成先は?”"); fgets( fname_out, FILENAME_MAX, stdin ); if ( (find = strchr(fname_in,'\n')) != NULL ) *find = '\0'; if ( (find = strchr(fname_out,'\n')) != NULL ) *find = '\0'; if((fp_in=fopen(fname_in, "r"))==NULL) return 1; if((fp_out=fopen(fname_out, "w"))==NULL) return 2; while(fscanf(fp_in, "%1000[A-Za-z]%*[^A-Za-z]", word)==1) if(list_add(&list, word)) fprintf(fp_out, "%s\n", word); fclose(fp_in); fclose(fp_out); return 0; } ----------------------------------------------- アルクの1から12 http://www.alc.co.jp/goi/svl_ichiran1.htm を全部まとめたテキスト(約12000行) をプログラムにかけると白紙でできあがります。 なぜかわかりますか?改善方法おしえてください。

  • unicodeファイルの読み込み

    javaアプレット上で BufferedReader file = new BufferedReader(new FileReader("C:/test/list.txt")); で外部テキストファイルを読み込んでいるのですが、この外部テキストファイルの文字コードをANSIからUnicodeに変えるとプログラムが動かなくなります。日本語やアルファベットではない文字の保存のためにテキストをUnicodeにて保存しなければならないのですが、どうすればUnicodeのテキストファイルを読み込むことができますか。

    • ベストアンサー
    • Java
  • VisualBasic2008でファイルから指定文字数の単語だけ抜き出したい

    VisualBasic2008でファイルから指定文字数の単語だけ抜き出したい場合にはどのようにすればいいのでしょうか? 読み込むファイルはテキストファイルで単語ごとに改行してあります。 完成のイメージとしては、ファイルの上から順に読み込んで行き、ボタンを押すごとに指定文字数の単語をテキストボックスに表示させていくという処理を考えています。 どなたかご教授願えないでしょうか?

  • 単語を読み取る(c言語)

    テキストファイルから英単語を読み取るプログラムを考えています。 fgets()だと一行読み取ってしまい、上手くいきませんでした。 初心者の私ですが、教えていただけませんか? ちなみに単語からハッシュ値を求めようとしています。

  • C言語で書き込んだファイルの重複行の削除と行の並び変えるプログラミング

    C言語で書き込んだファイルの重複行の削除と行の並び変えるプログラミング ファイル名が 0.txt というC言語で書き込んだテキストファイルがあり その中身は以下のようなものとします。 111 000 222 555 000 444 222 000 これらを行ごとに見て重複行を削除し 更に値の小さな順に並び変えたい、つまりファイル内を 000 111 222 444 555 となるようなプログラミングを考えているのですが 調べても分からず悩んでいます。 c言語のプログラム内に UNIXコマンドを扱う方法を考えているのですが c言語内でUNIXコマンドを併用するためのsystem()関数 や 重複行を削除する uniq というUNIXコマンドを どのようにプログラム内に挿入すればいいのでしょうか? ご回答、よろしくお願いいたします。 ちなみに以下のプログラムは system関数が理解できない私の作成失敗したものです。 #include <stdio.h> #include <stdlib.h> int main(void) { system("uniq 0.txt"); }

  • C言語、単語ごとに改行したい

    英文を入力させ、その英文から単語を抜き取るプログラム たとえば、 入力文字:This is a book. 単語: This is a book スペース、カンマ、コロンの時に改行という感じで、このようなプログラムを作りたいのですが、どのような感じに書けばいいでしょうか? わかる方、よろしくおねがいします

  • テキストファイルから文字列を読み込み!!

     Java初心者です。よろしくお願いします。 テキストファイルから文書を読み込み、その文章の中のある単語を検索するにはどうすればよいのでしょうか? BufferedReader br = new BufferedReader(new FileReader("test1.txt")); で読み込みをさせているのですが、読み込んだ後、その文章の中の単語(文字列)を検索し、それを何かに出力したいと考えています。 どなたかアドバイスをください!!よろしくお願いします!!