• ベストアンサー

C言語でアナグラムを求めるプログラム

C言語初心者で、勉強中です。 今アナグラムを求めるプログラムをC言語で作成しています。 内容はあらかじめある英単語が書いてあるテキストファイルから互いにアナグラムとなっている英単語をすべて求めてそれを出力するというプログラムです。 どこから手をつけていいかわからず悩んでいます。 そこでヒントをいただこうと思って質問しました。 どなたか回答よろしくお願いします。

みんなが選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (7996/17095)
回答No.2

じゃ,私が作るとした時の方針を書きましょう。 (1)テキストファイルから単語をすべて読む。 (2)各単語の文字を分解して,辞書順に整列させた文字列に変換する。 (3)変換された文字列を順にみて,ひとつ前の文字列と同じものがあれば,出力する。 (4)変換された文字列が尽きればおしまい。

natsu1989
質問者

補足

なるほど、単語単語を辞書順に変換すればいいのですね。 それで全部英字とその個数が合致したら出力する、ということでしょうか?

その他の回答 (3)

回答No.4

順列ですよね。勉強でしたら http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Permutation.html ソースでしたら http://www5.airnet.ne.jp/tomy/cpro/pe1.htm ではないでしょうか。

回答No.3

#1です。 > ソート関数を使って文字数でソートして一文字ずつ比較すればよいのでしょうか? 文字数でソートではないです。 単語の文字をソートです。wordならdorwになります。qsortでできます。 文字数が違ってたら直ぐ除外できます。strlen 一文字ずつ比較しなくても標準関数でstrstrやstrcmpがあります。 結局言ってることは#2さんと同じです。

回答No.1

とりあえず、文字数で弾いといて、 次にソートして比較したらよいのでは? 標準関数なら strlen, qsort, strstr 辺りを使うかな。

natsu1989
質問者

補足

ソート関数を使って文字数でソートして一文字ずつ比較すればよいのでしょうか? クイックソートならば作ったことありますのでがんばってみようと思います。ありがとうございます。

関連するQ&A

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

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

  • C言語のテキストファイルの読込み

    必要に迫られてC言語でテキストファイルの読込みを行う プログラムを作成しなければならなくなりました。 whileとfscanfを用いて書式を指定して一行ずつ読込むことができる ということは知っていますが、その際、たとえば読み込むファイルが 20行のテキストファイルだったとして、10行目から読込みを 行いたい場合はどのようにプログラムを書けばいいのでしょうか? なにぶんC言語初心者ですのでよろしくお願いします。

  • C言語プログラム

    C言語プログラム ある数を入力して、入力された数を一辺とする図形を描くプログラムを作りたいんです。 分かりやすくすると、 入力された数が5だった時、画面には ***** ***** ***** ***** ***** ↑こう出力させたいんです。 四角だけじゃなくて、 * ** *** **** ***** ↑こういう三角とか、逆三角とか、 *        * **     *** ***  ***** **     *** *        * こんなかんじでいろんな形を描けるようにしたいんです。 C言語で、for文の二重ループを使うようにとのことなんですが、 どうすればいいでしょうか。 こういうのってズルですけど、何かヒントでも貰えればと思っています...。

  • C言語のプログラム集

    こんにちは。C言語のテキストにはプログラムとその説明が書いていますが、 このC言語のプログラムが多くのっているような本はありますか?本屋さんで探したのですが、プログラムがものすごく多くのっているようなものがなかったので、もしお分かりの方がおられましたが、本の紹介をお願いします。

  • C言語・ファイルから読み込んだものを使用する

    現在C言語のある課題に取り組んでいるのですが、 ファイルから単語をいくつか読み込む、という作業がうまくいきません。 ファイルから読み込んだ単語は「s[i]」という文字列構造体にひとつずつ入れていくのですが、ファイルに入れた単語が10個に対し、 その作成しようとしているプログラムは1000個まで読み込めるものにしているため、printfで読み込んだ単語を画面に出力すると 11個目以降が訳のわからない文字になってしまいます。 どうやったら、scanfを読み込むファイルの最後でとめることができるか、誰か教えてください!

  • C言語でTIFファイルを読み込むプログラムを教えてください。

    C言語でTIFファイルを読み込むプログラムを教えてください。 C言語でTIFファイルを読み込むプログラムを組みたいのですが、テキストや参考書、ネットで調べてもよく分かりません。 もしお分かりになるのでしたらプログラムの一連の流れ(ソースプログラムも書いていただけるとなおさら嬉しいです)を教えていただけると助かります><

  • C言語でこんなことは可能ですか?

    現在あるプログラムを作りたいと思いC言語の勉強をしています。 それに伴い、下記のプログラムはC言語で作成可能でしょうか。 例) Aのフォルダ内にbというファイル(txt)があるとして、 bのファイル内の「ありがとう」という文字を検索し表示させるプログラム は作成可能でしょうか。表記としては --------------------------------- ファイル名 | 検索文字 ---------------------------------  A    | ありがとう  -------------------------------- としたいと思っているのですが・・・ よろしくお願いします。

  • 初心者のC言語

    私は、昨日からC言語を勉強し始めました。 大学の教授から2週間以内に50行程度のCプログラムを書けるようになって こいと指示を受けましたが、C言語をやったことが無いので、どのような勉強を すればいいのか分かりません。 初心者にも分かりやすいC言語のテキストやサイトを知っている方がいれば 教えてください。 お願いします。

  • MAC初心者 C言語

    MAC初心者です。テキストエディットでC言語のプログラムを作成したのですが、ファイルを.cの拡張子で保存できません。フォーマットの所に.cで保存できるものがないように思われます。gccはインストール済みです。すみませんがよろしくお願いいたします。

    • ベストアンサー
    • Mac
  • C言語のプログラムを作成して下さい。

    C言語で以下のような機能を持つプログラムを作成してください。 3つの文章X.txt,Y.txt,Z.txtでY,ZのうちどちらがXに近いか判定するプログラム。X.txtを読み込んでXに出現する単語からなる単語の木を作成する。次にY,Zを読み込み単語の木と単語の出現頻度をもとにXとY、XとZの類似度を測るための統計的データを計算する。そしてY,ZのどちらがXに近いか、とその根拠となる統計データを出力する。

専門家に質問してみよう