• 締切済み

VC++ 言葉の並び替え

授業でVC++2013を扱っているのですが、今回、以下のような課題が出題されました。 「アルファベットの順がおかしい英単語を入力して、正しい英単語を表示させよ」 (例) alpep → apple 条件  ・クラスを一つ以上使う  ・静的(static)メンバ関数を使う  ・string class を使ってはならない また、参照とする英単語辞書のようなものはファイルストリームで読み込め、とのことです。 正直、何をどうすればよいのかさっぱりなので、筋道だけでも教えていただきたいです。 なお、授業はC++初心者用なので、あまり複雑なことを使う方法だと私自身さっぱりわからないので、そちらも配慮いただけると幸いです。 取り敢えず、今まで扱ったものとしては繰り返し、条件分岐、配列、ポインタ、オブジェクト、クラスといったところです。

みんなの回答

回答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
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

まあ「どのアルファベットを何回使っているか」を数えればいいだけなんだろうけど.... 「string class を使ってはならない」という条件だから, wstring は使っていいんじゃないでしょうか>#1.

Z-Master
質問者

お礼

回答ありがとうごさいます。

全文を見る
すると、全ての回答が全文表示されます。
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> また、参照とする英単語辞書のようなものはファイルストリームで読み込め、とのことです。 事前に読み込みした際に、アルファベット順を一定の順序に並べ替えた辞書にしとくとか。 aelpp:apple aegnor:orange amoott:tomato 入力された文字は、同じように並べ替えすれば照合できます。 canoe(カヌー)とocean(海)だと、どっちだか分からないですが。 > ・クラスを一つ以上使う 単語のクラス作って、 ・単語を指定してのコンストラクタ ・単語と、並べ替えた単語を保持 ・単語と、並べ替えた単語を取得 ・並べ替えた単語の比較 とか。 > ・静的(static)メンバ関数を使う 意図がイマイチ不明瞭ですが、テキトーに使えなくは無いかも。 > ・string class を使ってはならない 単語の長さを制限するとかすれば、無くても問題ないかも。

Z-Master
質問者

お礼

回答ありがとうございます。頑張ってやってみます。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

あらかじめ読み込まれた単語表にある各単語:wordについて、 入力された文字列の文字を並び替えてwordと一致させることが できたらそのwordを出力する。 で、いいのかな? - テキストファイルから単語表を作る -- for ( 単語表にある各単語 : word ) { --- for ( 入力文字列を並び替えてできる語 input ) { ---- if ( word == input ) { word を出力する } --- } - } 「string classを使うな」の条件が付いた時点で 僕は回答しない。ナンセンスだから。

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です。

このQ&Aのポイント
  • 成人しているにもかかわらず、小学生の頃に母親からの暴力を受けた経験があります。宿題や勉強ができないと怒鳴られたり、髪の毛を引っ張られたり、無理矢理食べさせられたりといった行為がありました。また、暗い部屋で冷たい麦茶を身体にかけられたり、大切な人形を埃まみれの押し入れに捨てられたりといった出来事もありました。
  • 母親は普段は優しく接してくれるが、暴力を振るう一面もありました。虐待だったのかどうかは分かりませんが、過去の出来事を思い出しても特に辛さを感じないため、辛くない出来事だったのかもしれません。
  • しかし、母親が自分を包丁で刺そうとしてくるような状況もあったため、客観的な意見を求めています。虐待の範疇に入るのかどうかを判断してほしいです。
回答を見る