アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語初心者で、勉強中です。

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

A 回答 (4件)

順列ですよね。

勉強でしたら
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/ …

ソースでしたら
http://www5.airnet.ne.jp/tomy/cpro/pe1.htm

ではないでしょうか。
    • good
    • 0

#1です。



> ソート関数を使って文字数でソートして一文字ずつ比較すればよいのでしょうか?

文字数でソートではないです。
単語の文字をソートです。wordならdorwになります。qsortでできます。
文字数が違ってたら直ぐ除外できます。strlen
一文字ずつ比較しなくても標準関数でstrstrやstrcmpがあります。

結局言ってることは#2さんと同じです。
    • good
    • 0

じゃ,私が作るとした時の方針を書きましょう。


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

この回答への補足

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

補足日時:2010/01/07 19:52
    • good
    • 0

とりあえず、文字数で弾いといて、


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

この回答への補足

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

補足日時:2010/01/07 19:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!