我需要帮助将valus与字符串相关联以计算平均值

时间:2015-05-10 11:34:18

标签: c++ visual-c++

我需要帮助将值与某些字符串相关联,以便在用户输入后计算平均值。 所以我尝试使用string :: find,因为值是顺序的; 我最终得到了这段代码:

string str1, str2, str3, str4, str5;
string::size_type position;
float media;
str1 = "NSMBE";
cout << str1.find("N") +1  << endl;
cout << str1.find("M") + 1 << endl;
cout << str1.find("M") + 1 << endl;
cout << str1.find("B") + 1 << endl;
cout << str1.find("E") + 1 << endl;

但是现在我如何从这里获取用户输入并使字符串等于每个值? 示例:用户输入等级1的N和等级2的M;所以N = 1且M = 2,所以我得到的平均值是(1 + 2)/ 2。 ..

我确定它真的很简单易行,但我到处搜索才能找到答案,而且无法做到。

1 个答案:

答案 0 :(得分:0)

如果您尝试将字符串(或字符)与值相关联,则应使用关联容器,例如std::map。我不确定我是否理解你的问题,但这里可能会让你开始。

#include <iostream>
#include <map>

using namespace std;
int main(int argc, char *argv[]) {
    string str1, str2, str3, str4, str5;
    str1 = "NSMBE";
    map<char, int> values;

    cout << "Enter a letter: ";
    for (char key; cin >> key; cout << "Enter a letter: ")
    {
        int val;
        cout << "enter a value: ";
        cin >> val;
        values[key] = val;
    }

    int sum = 0;
    for (char c : str1)
    {
        cout << "key = " << c << endl;
        sum += values[c];
    }
    cout << endl;
    cout << sum << endl;
    cout << "Value of the string: " << double(sum)/double(str1.size()) << endl;
}