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

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

締切り済みの質問

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

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

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

投稿日時 - 2010-01-07 19:00:04

QNo.5575331

すぐに回答ほしいです

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

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

回答(4)

ANo.4

順列ですよね。勉強でしたら
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Permutation.html

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

ではないでしょうか。

投稿日時 - 2010-01-09 18:26:00

ANo.3

#1です。

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

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

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

投稿日時 - 2010-01-08 20:27:24

ANo.2

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

投稿日時 - 2010-01-07 19:32:06

補足

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

投稿日時 - 2010-01-07 19:52:32

ANo.1

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

投稿日時 - 2010-01-07 19:14:35

補足

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

投稿日時 - 2010-01-07 19:16:39

あなたにオススメの質問