【问题标题】:I'm stuck in this area. What show I do with this?我被困在这个区域。我用这个做什么节目?
【发布时间】:2021-12-11 10:46:54
【问题描述】:

我正在为 C++ 做这个问题,但我现在无法弄清楚。我做错了什么?再一次,这是在 C++ 中,而不是 python。

资本测验

编写一个程序,创建一个地图,其中包含美国各州作为键,它们的首都作为值。 (使用 Internet 获取州及其首都的列表。)然后程序应该通过显示州的名称来随机询问用户,并要求用户输入该州的首都。程序应该记录正确和错误响应的数量。 (作为美国各州的替代方案,该程序可以使用国家及其首都的名称。)

这是我目前的工作:

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main()
{
    map<string, string> states = {
{"Alabama", "Montgomery"}, {"Alaska", "Juneau"}, {"Arizona", "Phoenix"} {"Arkansas","Little Rock"},
        {"California", "Sacramento"}, {"Colorado", "Denver"}, {"Connecticut", "Hartford"},
        {"Delaware", "Dover"}, {"Florida", "Tallahassee"}, {"Georgia", "Atlanta"}, {"Hawaii", "Honolulu"},
        {"Idaho", "Boise"}, {"Illinois", "Springfield"}, {"Indiana", "Indianapolis"},
        {"Iowa", "Des Moines"}, {"Kansas", "Topeka"}, {"Kentucky", "Frankfort"},
        {"Louisiana", "Baton Rouge"}, {"Maine", "Augusta"}, {"Maryland", "Annapolis"},
        {"Massachusetts", "Boston"}, {"Michigan", "Lansing"}, {"Minnesota", "Saint Paul"},
        {"Mississippi", "Jackson"}, {"Missouri", "Jefferson City"}, {"Montana", "Helena"},
        {"Nebraska", "Lincoln"}, {"Nevada", "Carson City"}, {"New Hampshire", "Concord"},
        {"New Jersey", "Trenton"}, {"New Mexico", "Santa Fe"}, {"New York", "Albany"},
        {"North Carolina", "Raleigh"}, {"North Dakota", "Bismarck"}, {"Ohio", "Columbus"},
        {"Oklahoma", "Oklahoma City"}, {"Oregon", "Salem"}, {"Pennsylvania", "Harrisburg"},
        {"Rhode Island", "Providence"}, {"South Carolina", "Columbia"}, {"South Dakota", "Pierre"},
        {"Tennessee", "Nashville"}, {"Texas", "Austin"}, {"Utah", "Salt Lake City"},
        {"Vermont", "Montpelier"}, {"Virginia", "Richmond"}, {"Washington", "Olympia"},
        {"West Virginia", "Charleston"}, {"Wisconsin", "Madison"}, {"Wyoming", "Cheyenne"}
    };
    
    map<string, string>::iterator it;
    
    for (it = states.begin(); it != states.end(); it++){
        cout << "What is the capital of " << states.first << "?" << endl;
        cout << states.first << " " << states.second << endl;
    };
    
    return 0;
}

【问题讨论】:

  • 无需再保证它不是 python。一方面,您没有标记 python。另一方面,C++ 看起来一点也不像 python。可能还有其他一些“手”。另外,你的问题是什么?
  • 我只是放心,因为我发现有很多关于这个问题的帖子,它们都是 python 而不是 C++。我的问题是如何让我的程序搜索整个地图以查找我输入的字符串。
  • 我真的不在乎你的理由是什么。标签和代码使其足够明显。
  • 我对“states.first”和“states.second”有疑问,它们应该是“it.first”和“it.second”。

标签: c++ database string integer


【解决方案1】:

看起来您需要一个随机数生成器,一种接收输入/输出的方法,一种访问这些值的方法。

#include <iostream>
#include <random> 
#include <ctime> 
#include <map>
#include <string>
int main()
{
    std::map<std::string, std::string> states = {
    {"Alabama", "Montgomery"}, {"Alaska", "Juneau"}, {"Arizona", "Phoenix"}, {"Arkansas","Little Rock"},
        {"California", "Sacramento"}, {"Colorado", "Denver"}, {"Connecticut", "Hartford"},
        {"Delaware", "Dover"}, {"Florida", "Tallahassee"}, {"Georgia", "Atlanta"}, {"Hawaii", "Honolulu"},
        {"Idaho", "Boise"}, {"Illinois", "Springfield"}, {"Indiana", "Indianapolis"},
        {"Iowa", "Des Moines"}, {"Kansas", "Topeka"}, {"Kentucky", "Frankfort"},
        {"Louisiana", "Baton Rouge"}, {"Maine", "Augusta"}, {"Maryland", "Annapolis"},
        {"Massachusetts", "Boston"}, {"Michigan", "Lansing"}, {"Minnesota", "Saint Paul"},
        {"Mississippi", "Jackson"}, {"Missouri", "Jefferson City"}, {"Montana", "Helena"},
        {"Nebraska", "Lincoln"}, {"Nevada", "Carson City"}, {"New Hampshire", "Concord"},
        {"New Jersey", "Trenton"}, {"New Mexico", "Santa Fe"}, {"New York", "Albany"},
        {"North Carolina", "Raleigh"}, {"North Dakota", "Bismarck"}, {"Ohio", "Columbus"},
        {"Oklahoma", "Oklahoma City"}, {"Oregon", "Salem"}, {"Pennsylvania", "Harrisburg"},
        {"Rhode Island", "Providence"}, {"South Carolina", "Columbia"}, {"South Dakota", "Pierre"},
        {"Tennessee", "Nashville"}, {"Texas", "Austin"}, {"Utah", "Salt Lake City"},
        {"Vermont", "Montpelier"}, {"Virginia", "Richmond"}, {"Washington", "Olympia"},
        {"West Virginia", "Charleston"}, {"Wisconsin", "Madison"}, {"Wyoming", "Cheyenne"}
    };
    std::mt19937 mersenne{ static_cast<std::mt19937::result_type>(std::time(nullptr)) };    

    std::uniform_int_distribution<> die{0, (int)states.size() - 1};

    int totalGuess {};
    int correctGuess{};

    while(true)
    {
        int randomNum {die(mersenne)};
        auto iter = std::next(states.begin(), randomNum);

        std::cout << "What is the capital of " << iter->first << "?";
        std::string guess{};
        std::cin >> guess;
        if(guess == iter->second)
        {
            std::cout << "Right\n"; 
            ++correctGuess;
        }
        else
            std::cout << "Wrong\n";
        
        ++totalGuess;
    }
            

    return 0;
}

【讨论】:

  • 我相信这段代码似乎很有意义。我将不得不对您的代码进行一些调整以使其成为我自己的,但到目前为止,这一切都清楚了。我很感激。
  • @GameFace 如果我的回答有帮助,请考虑接受我的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 1970-01-01
相关资源
最近更新 更多