• 締切済み

VC++ 言葉の並び替え

επιστημη(@episteme)の回答

回答No.4

#2 に基づいて実装してみた(string使用) #include <iostream> #include <fstream> #include <map> #include <algorithm> #include <string> /* --- foo.txt apple banana cherry grape orange */ using namespace std; int main() { map<string,string> dic; { string word; string key; ifstream stream("foo.txt"); while ( stream >> word ) { key = word; sort(key.begin(), key.end()); dic[key] = word; } } string inputs[] = { "allep", "nanaba", "rryche", "peach" }; for ( int i = 0; i < 4; ++i ) { string word = inputs[i]; string key = word; sort(key.begin(), key.end()); cout << word << " -> "; auto iter = dic.find(key); if ( iter != dic.end() ) { cout << iter->second << endl; } else { cout << "???" << endl; } } } --- 実行結果(Visual C++ 2013: vc12) --- allep -> ??? nanaba -> banana rryche -> cherry peach -> ???

Z-Master
質問者

お礼

ありがとうございます。いただいた例を参考に自分でプログラムを作っていきたいと思います。

関連するQ&A

  • vc2005.net 構造体の宣言について

    visual studio(VC++) .net 2005マネージを練習しています。 クラス内に構造体を作りたいのですがうまくいきません。 public ref class Form1:~~ 上記クラス中で public: static STRUCTTEST test = gcnew STRUCTTEST; 上記のように記述したところ '^'この間接指定を型STRUCTTESTで使用出来ません。 と出ます。 マネージだから'^'で良いのではないでしょうか。 ^をとったところ testをマネージtestslusion::Form1のメンバとして定義できません。混合型はサポートされません。 と出ます。マネージでは^が必要なはずなのでこれは分かるのですが・・・。 gcnewをnewにしても^を*にしてもコンパイルエラーが出ます。 これは何故でしょうか。 ちなみに配列を static array<int>^ test = gcnew array<int>(10); このように記述する事は分かりました。

  • VC++2010を覚えたい(極めたいではない)

     ExcelVBAで実験データを整理していますが、Excelのみでしか使えない等の問題からVC++2010をそこそこ使えるようになりたいのです(極めようとまでは思っていません)。先日もここで質問させていただいたのですが、メッセージボックスを出したりファイル操作をしようとすると、知識不足のためコードが正しく書けずエラーばかり出て格闘しています(VBAだと、msgbox"こう書けば表示される" の一行で済むことをやるのに、かなり格闘します)。  そこで、これら基本動作を完全に使いこなせるようにするために勉強をしたいのですが、何について勉強すればいいのかよくわかりません。どんな本を買って何を勉強すべきでしょうか?いい本があったら教えてください。特にできるようになりたいことを下に書きます。 1 #include <stdio.h>とかのインクルードファイルを宣言する位置。 2 intやdouble等の変数宣言も、たまにエラーでできないことがある。   関数内では変数宣言の方法が違うのかな?   String^ でどうして^がついたりつかなかったりするかわからない。   これでエラーとかよく出ます。^は大嫌い>< 3 メッセージボックスとかの表示。messageboxの前や後ろにshowとか::とかどうして必要か   わからない。メッセージボックスに確認する変数の数値を出すのも難しい。 4 データファイルをいろいろ操作したい。データファイルはテキストデータのみ 5 グラフもVC++で書けるとうれしい。必要があるときだけでいい。 forやif等の制御構造、配列、ポインタ等はもう知っています。 これらができるようなるには、「クラス」とかを勉強するとわかるのでしょうか? クラスが何のことだかもわかりませんが。

  • C# クラスの配列の並び替えについて

    お世話になります。 VC#2010にて、 class A { int id; string name; int price; int categoly; } 上記のようなクラスの配列、ここではA[] Asとしますが、 この配列にnameやprice,categolyがバラバラの データが入っているものとした場合、 第一条件でcategoly、第二条件でprice, 最後にnameの順で並び替える方法を教えてください。 SQLだと、SELECT * FROM As ORDER BY categoly,price,name のような結果に並び替えます。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • VC++6でfgets関数の変わりになるような関数はあるのでしょうか。

    現在、VC++6を用いて、MFC を使わずにアプリケーションを作っています。 アセンブラ経験はありますが、C言語経験がないので、四苦八苦しています。 今回、 csv形式のファイルを読込んで、配列に格納したいのですが上手くいきません。 c言語の場合は、fopen関数で開いたファイルを、fgets関数で1行づつ読込み、 strtok関数で、処理すれば良いということが分かりました。 ところが、VC++6のCreateFile関数では、ファイルのポインタの変わりに、 クラスのハンドルが返ってくるので、fgets関数は使えないような気がします。 なにかfgets関数の変わりになるような関数はあるのでしょうか。 質問の意味が分かりずらいかと思いますが、適当に汲み取って教えて下さい。 宜しくお願いします。

  • この英単語の意味がわかりません

    ゲーム「BULLY」で英語の授業があり、6つのアルファベットを組み合わせて英単語を作る。というミニゲームがあります。その中にFITHという単語があるのですが、ネットで調べても出てきません。この単語の意味を知っている方はいませんか?

  • C言語 よく使うのは?

    C言語の参考書で、例えば1章~8章まであるとすると、 1章~前半くらいは、printfや変数や、演算など出てきると思うんですが、後半にかけて、配列やポインタや関数など出てくると思います。 実際に仕事で、よく使うのを挙げるとどんなのですか?(例えば、ポインタはよく使うや配列もよく使うや) もちろん、変数や演算などが出来ないと条件分岐や配列もポインタも何も出来ないと思うんですが、 上手く言えないんですが、for文はよく使うから、ちゃんと理解していないとダメとか、仕事ではポインタがしょっちゅう使うとか、ありますか? 本屋さんで見ると、ポインタ専用の本や、関数専用の本があるので、よく使うのかなと思いました。 それか、難しく理解が難しいから、より詳しく書かれているんでしょうか? 上手く説明が出来ていないですが、よろしくお願いします。

  • 英単語暗記が苦手

    はじめまして、このカテには初めて書かせてもらいます。 現在高2でそろそろ受験意識が芽生えてきました。 そこでちょっと悩みがあります。 それは英単語の暗記が苦手ということです。 暗記のみで考えたら得意ではないですが、ある程度はできます。 例えば世界史なら出来事の流れを理解することで覚えることができます。 倫理だったら哲学者の考えに共感したり、自分もこれに当てはまるなとか考えることで覚えることができます。 でも英単語は僕にとっては単純にアルファベットの配列を覚えるような感じなのです。 つまり暗記中に面白さや意義を感じないんです。 どうやったらもっと意欲的に英単語暗記が出来るでしょうか? 暗記が得意な方や、英単語の暗記は苦手だったけどこうやったら覚えられた!って方の意見を特に聞きたいです。 お願いしますm(_ _)m

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

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

  • 超初心者が英語、英会話を勉強したい場合

    よろしくお願いします。どうすれば良いのでしょう。英会話教室はお金の問題でナシの方向で。 まず英単語を覚えるために、キクタン2000がお勧めされたので、それを買って、今勉強を開始しました。 しかし、例えば本が出題する英単語は覚えれるだろうと思います。しかし、英単語が混ざる文章を勉強しましょう、という問題があった場合、その本が教える英単語は分かるけど、それ以外の単語や文章が分かりません。goの「過去形」って「went」なんですね、レベルです。ようは、紹介される単語は覚えられますが、それ以外も必要とされます。僕にはそれ以外「も」足りないのです。 馬鹿な話、タイトル通りです。超初心者がゼロから学ぶ場合、じゃあどうすればいい? から僕は始まるらしいのです。ゴールは見えています。英会話したいのです。 しかし、ふわっとした解決方法のようなものしかわかりません。とりあえず英単語学べば良いんだろう。あとはそれを文章にしたいんだけど、英文法? 英会話? どっちを学べば? 両方? そんな感じです。 こう、「どうすれば」いいんでしょう。とにかく英会話したいんです。ドクタースースさんの絵本を買おうとも思います。子供が読める絵本は好きなので、学びやすいだろうと思って。Mr. Evineさんのアルファベットから英語の基礎をなんとかするドリルも買おうと思います。 皆さんはどうしてますか? おすすめの方法や本があれば教えてください。

  • O(オー)で始まる単語

    アルファベットのO(オー)で始まり、以下の条件を満たす単語を探しています。 ・恋愛に関連する単語 ・できれば名詞 例えば、dで始まる場合で、恋愛に関連する単語だと・・・ dear dearest 等です。 こんな感じで、Oで始まる英単語を探しています。通常使われていないような単語でもOKです。