• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:c++ 参考書の問題)

C++参考書の問題|練習問題解けない|教えてください

このQ&Aのポイント
  • C++参考書の練習問題が解けないときの対処方法について教えてください。名前と年齢を扱う問題の解法も教えていただけると助かります。
  • C++参考書の問題で、名前と年齢を扱う問題があります。解けない場合はどのように対処すればいいですか?ソートやペアの出力についても教えていただけると嬉しいです。
  • C++の参考書で出題された名前と年齢を扱う問題が難しくて解けません。解法やアドバイスを教えてください。ソートやペアの出力についても詳しく教えていただけると嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • gragra24
  • ベストアンサー率31% (18/57)
回答No.1

ヒントの意味が分りませんね。 もしかすると誤記で、ageではなくnameのソート前のコピーを取っておいて、 nameのソート前、ソート後の比較から、ageをソートさせろと言いたいのかもしれません。

koun
質問者

お礼

#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main(){ //nameベクターをつくる vector<string> name; name.push_back("Taro1"); name.push_back("Taro2"); name.push_back("Taro3"); name.push_back("Taro4"); name.push_back("Taro5"); //ageベクターをつくる vector<double> age; double d_age; for(int i=0; i<name.size(); ++i){ cout << name[i] << " age:"; cin >> d_age; age.push_back(d_age); } //ソート前のnameベクターのコピーをつくる vector<string> pre_name = name; //nameベクターをソートする sort(name.begin(), name.end()); //新しいageベクターをつくる vector<double> new_age(name.size()); for(int i=0; i<name.size(); ++i){ for(int j=0; j<name.size(); ++j){ if(pre_name[j] == name[i]){ new_age[i] = age[j]; } } } //表示 cout << "ソートしました。\n"; for(int i=0; i<name.size(); ++i){ cout << name[i] << " age:" << new_age[i] << '\n'; } return 0; } こんな感じでいいのでしょうか?

koun
質問者

補足

そうかもしれません。

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

> こんな感じでいいのでしょうか? 結果が正しけりゃいいんじゃね? #include <iostream> #include <vector> #include <string> #include <utility> #include <tuple> #include <algorithm> #include <iterator> using namespace std; int main() { // 5つの名前をvector<string> nameに読み込み、 // 名前が指定された人の年齢をユーザに入力させ、 // 年齢をvector<double> ageに格納せよ。 // ↑メンドクセーので省略 vector<string> name { "chris", "mike", "bob", "andy", "bill" }; vector<double> age { 10, 20, 30, 40, 50 }; // 次に、name[i]とage[i]のペアを5つ出力せよ。 for ( int i = 0; i < name.size(); ++i ) { cout << name[i] << ':' << age[i] << endl; } cout << endl; // 名前をソートしname[i]とage[i]のペアを出力せよ。 // ここで注意しなければならないのは、age vectorの順序を // ソートされたname vectorと正しく一致させることである。 vector<tuple<string,double>> pairs; transform( begin(name), end(name), begin(age), back_inserter(pairs), [](string n, double a) { return make_tuple(n,a);}); sort( begin(pairs), end(pairs), [](const tuple<string,double>& x, const tuple<string,double>& y) { return get<0>(x) < get<0>(y); }); for ( const auto& item : pairs ) { cout << get<0>(item) << ':' << get<1>(item) << endl; } }

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • Windows10で使用している筆まめVer.20が突然起動しなくなりました。2024年1月3日朝までは年賀状を作成できたのですが、夕方になって突然起動しなくなりました。アンインストールして再インストールしても起動しないため、困っています。原因と解決策を教えてください。
  • 質問内容は、Windows10で使用している筆まめVer.20が突然起動しなくなり、アンインストールして再インストールしても起動しないというものです。2024年1月3日朝には年賀状を作成できたのに、夕方になって起動しなくなったので困っています。原因と解決策を教えてください。
  • 筆まめVer.20が起動しなくなった際の原因と対処法を教えてください。Windows10を使用しており、2024年1月3日朝までは正常に年賀状を作成できていたのですが、夕方になって突然起動しなくなりました。アンインストールして再インストールしても解決しないため、どう対処すればよいか悩んでいます。
回答を見る