- 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
302 :デフォルトの名無しさん[sage]:2016/01/23(土) 22:07:23.87 ID:YzHFCyx5 - http://cpp-lang.sevendays-study.com/problemex5.html
このサイトの5-2の問題、数字を漢数字に変換する問題をやってるのですが(面倒なので1〜3のみとする) #include<iostream> #include<string> #include<map> using namespace std; int main() { string a; map<string, string> m; int i; string names[] = { "1","2","3" }; m[names[0]] = "一"; m[names[1]] = "ニ"; m[names[2]] = "三"; cout << "入力してください:"<<endl; cin >> a; string::iterator it = a.begin(); for (it = a.begin(); it < a.end();it++){ cout << m[*it] ; } //else { cout << "存在しません"; } return 0; } このコードのcout<<m[*it];の部分でエラーが出てしまいます 自分の考えではiterator itを入力されたaの1文字目から最後の文字まで動かし、そのitが指す値をmapで変換しています なぜダメなのでしょうか?
| - 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
304 :デフォルトの名無しさん[sage]:2016/01/23(土) 22:53:37.80 ID:YzHFCyx5 - map<char,string>にしたらうまくいきました。
ありがとうございます。 続いてまた質問なのですが、以下のコードで1から10の乱数を10回発生させてsetにその乱数をいれてるのですが、毎回10個の乱数が同じになってしまいます 何が悪いのでしょうか?(実行すると、coutの結果として22222222222、5555555555のようになります) #include<stdio.h> #include <stdlib.h> #include<time.h> #include<iostream> #include<set> using namespace std; int main() { int a; set<int> number; for (int i = 0; i < 10; i++) { srand((unsigned) time(NULL)); a= rand() % 10 + 1; cout << a ; number.insert(a); }
| - 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
306 :304[sage]:2016/01/23(土) 22:56:59.97 ID:YzHFCyx5 - すみません
srandの部分をコメントアウトしたら解決しました
|
|