• 締切済み

英単語をアルファベット順に

英単語をいくつか入力し、それをアルファベット順に並べ替えるプログラムが作りたいのですが。アルファベットをaから順に小さくなっていくようにし、英単語の頭文字を取り出し大きい順に並べ替えるというふうな感じにしたいのですが、なかなかうまくいきません。誰か教えていただけませんか?

みんなの回答

回答No.4

単語が既に char **w に nw 個入っている場合は次のようにすると辞書順にソート出来ます(逆順にソートしたいなら cmp() の a, b を入れ換えれば良い)。 static int cmp(const void *a, const void *b) {  return strcmp(*(const char **) a, *(const char **) b); } void wordsort(char **w, size_t nw) {  qsort(w, nw, sizeof(*w), cmp); }

回答No.3

> intならできるんですが、charにの交換の仕方がわからないんです。 文字の交換ではなく、文字列の交換ですよね? #include <stdio.h> int main() { char* data[] = { "first", "second" }; /* ここから */ char* tmp = data[0]; data[0] = data[1]; data[1] = tmp; /* ここまで */ printf("%s %s\n", data[0], data[1]); return 0; } ホラできた。intと同じでしょ?

  • dra2jp
  • ベストアンサー率25% (18/72)
回答No.2

何がわからないのかを明確に言ってもらわないと何を答えていいのかがわからないですが 英数字はint型であらわせますから 例えばa~zまたはA~Zの英数字を1~52の数字に変換するには 例えば入力した英字を変数chに格納したとし、変換した数値を格納する変数をvとすれば if( 'a' <= ch && ch <= 'z' ) v = ch - 'a'; else if( 'A' <= ch && ch <= 'Z' ) v = ch - 'A' + 26 ; else printf("入力した文字は英字ではない。\n"); で入力した英字を1~52の数字に変換できます。 英字が整数値に対応するのはJIS符号表に元づいています。 例えば 'A'は65、'B'は66...連続...'Z'は90です。 しかし'Z'の次は'a'ではありませんから注意が必要です。 一度JIS符号表をみてみると仕組みがよくわかります。 どの部分がわからないのかが明確に書いてあれば正しい回答もできるのですがこれで参考になれば幸いです。

kannsaijunn
質問者

補足

初歩的な質問で恐縮ですが、並び替えをするには何を使えばよいのですか?

回答No.1

なにがうまくいかないのですか? 整数(int)であればできますか? それができるなら、文字列でもできるでしょう。 比較と交換のやり方が異なるだけで、アルゴリズムは同じですから。

kannsaijunn
質問者

補足

intならできるんですが、charにの交換の仕方がわからないんです。

関連するQ&A

  • 英単語を構成するアルファベットを調べるには

    様々な英単語を調べると、先頭から2番目にくるアルファベットは母音であることがが多いと思います。 では、2番目にくるアルファベットで子音では何が多いかということを調べようと思った時、どうやった方法を用いればいいでしょうか? エクセルの関数などを使えば可能でしょうか? 実際答えをお知りならそれを教えて頂いてもけっこうですし、そういうデータがあるサイトを教えて下さってもけっこうです。 先頭のアルファベットごとに2番目にくるアルファベットが調べられればと思っています。 例 先頭がaではじまる英単語の2番目にくるアルファベットは母音以外なら多い順で、 n・m・k・l・p・・・のようになる――といった感じで。

  • アルファベット順に並べるソフトウェア

    現在、自分なりの英語の単語集をexcelに作っていますが、単語をアルファベット順に整序する機能がないため検索に時間がかかります。入力した単語をアルファベット順に並べるようなソフトウェアはないものでしょうか?ご助言を賜りたいと思います。

  • 英単語 覚え方

    英単語を覚える為、単語帳を自作しようと考えています。そこで、単語帳を作成するときに、アルファベット順か連語順のどちらが覚えやすいですか。また、動詞とか副詞とか書いた方が良いですか。何か良いサイトがあれば教えて下さい。

  • エクセル アルファベットの並び替え(単語帳)

    エクセルで英単語帳を作っていて、これをアルファベット順に並べたいのですが、どのようにすればよいでしょうか? A列に英単語、B列に和訳、C列に英文例を入れています。 A列のみの並べ替えはできるのですが、B列、C列がついてきません。 (エクセルを使いこなせていない実力のせいもあるかもしれませんが。) よろしくお願いいたします。

  • mac 英単語の単語登録

    mac で、グーグル日本語入力とことえりとを併用しています。 頻繁につかう単語を単語登録したいのですが、登録したいのは、長い英単語(英熟語?スペース、ハイフン等ふくむ)です。 普通に日本語入力で登録すると、表示に際して、その英単語が大文字で表示されてしまいます。 長いにもかかわらず、非常に繰り返し使う英単語なので、一部分だけを打ち込んだら全部が表示されるようにしたいのです。 その単語は、「 ◯◯ emond:◯◯.oeu kiki:jekkk」 (適当です) という形態で使うもので、この◯◯の中にはその時々に応じて英単語が入ります。 なので、これを表示させる際には、パソコンはだいたいアルファベット表示になっていますので、できれば、アルファベット入力で登録しておけたらなと思っています。 例えば、一旦登録しておけば、「じゅうしょ」と打ち込めば自分の住所を候補一覧に表示させることができますよね。 あれの英語入力版、ないしは、携帯の文字入力予測機能のようなものを期待しています。 良い方法を御存知の方がいらっしゃいましたら、どうぞよろしくお願いいたします。

    • 締切済み
    • Mac
  • 英単語を正確に覚えたい

    英文を読むときheatとheart、wondorとwander、thoughtとtaught、 contrastとconstructなどを取り違えてしまいます。 私は英単語を大体の見た感じで覚えているようで、 3文字4文字アルファベットが同じだと似ている単語と間違えてしまいます。 頭で音読するように意識してもいつの間にか目で英文を読んでしまいます。 そのため、たまにありえないような勘違いをしてしまうことがあって困っています。 どうしたら正確に単語を読めるようになれますか? ちなみに受験対策です。

  • エクセルで連続した同じアルファベットを持つ単語を抜き出す

    こんにちは いつもお世話になっています。 エクセルで連続した同じアルファベットを持つ単語のセルを抜き出す方法を教えてください。 A列に英単語があります。例えば、「commit」のように同じアルファベットが連続した部分を持つ単語を抜き出して(選択して?)B列に「重複」の文字を挿入したいのです。 アルファベットの重複は連続していればいくつでも構いませんし、単語のどの部分にあるかも問いません。  よろしくお願いします。

  • 文字をアルファベット順に3つずつずらす方法

    エクセルで、 文字をアルファベット順に3つずつずらす方法を教えてください。 A1セルに"ABC"と入力したら、 B1セルに"DEF"と表示されるようにしたいのですが... よろしくお願いします。

  • アルファベット4文字の英単語を表札に!

    こんばんはー ^^ 「表札」に氏名に関わる情報は一切表示禁止となったとします。 代わりに、アルファベット4文字で形成される英単語一つを自宅の「表札」に表示の義務化! あなたならどんな英単語にしますか?^^ できれば簡単でいいのでその理由もお願いします。 <例> 『 cool 』 理由… 「涼しい」季節が好きだし、「冷たい」飲み物が好きで、 「素敵」「格好いい」人になりたいからです♪ どうぞ宜しくお願い致します。 *質問者は英語が得意ではありません。   ご了承くださいね ^^;

  • 英単語を効率よく覚えたい。

    いま英単語を暗記しているのですが、使っている単語帳はアルファベット順で、関連語も一つにまとまって、しかも似たような意味の語もひとかたまりになっている形式です。この形式ですと、例えば「理解する」という意味の語が出てきたとします。似たような意味が続いているので、その次の単語(熟語)の意味がもしわからなくても、なんとなく「理解する」というような意味だろうな・・・と推測できてしまって、いざそれがいきなり単独で出てきたら分からない状態になってしまう気がします。 前置きはここまでにしておいて、今望んでいるソフトは自分で英単語とその意味をあらかじめ入力しておいて、それをランダムに出題するという形式の暗記用のソフトを探しているのですけど何かいいのはありませんか? よろしくお願いします。