我需要做的是:我现在有一个向量行,v[0]
是第一行等等。我想将每行的第一个数字作为挑战,并将每行的第二个数字作为裁判读取,然后在代码中应用条件。我想用stringstream
来读取行中的数字。使用stringstream和getline来读取每行的前两个数字
我的代码现在在做什么:它只读取每行的第一个数字。所以第一行的第一个数字是挑战,第二行的第一个数字是法官,第三行的第一个数字是挑战。
std::vector<string> v;
string line;
int i;
double challenge;
int judge;
while (getline(cin, line)) {
if (line.empty()) {
break;
}
v.push_back(line);
}
for (i = 0; i < v.size();i++) {
cin >> v[i];
std::stringstream ss(v[i]);
ss << v[i];
ss >> challenge >> judge;
if (challenge < 1 || challenge > 5) {
cout << "bad_difficulty" << endl; //must add the condition or empty
v.erase(v.begin() + i);
}
if (judge != 5 || judge != 7) {
cout << "bad_judges" << endl; //must add the condition or empty
v.erase(v.begin() + i);
}
cout << v[i] << endl;
}
return 0;
}
例如:
Input:
5.1 7 5.4 3.0 9.6 2.9 2.8 2.0 5.4
-3.8 7 2.9 1.1 5.7 7.2 4.8 8.5 3.9
2.2 5 9.4 4.7 7.3 1.9 5.7 6.0 7.1
2.4 6 9.2 5.2 1.0 2.9 4.9 7.4 7.9
2.1 7 7.9 4.9 0.0 7.2 9.1 7.8 6.7 4.3
3.8 5
2.0
4.0 7 2.4 1.9 3.2 8.3 14.8 0.1 9.7
2.5 7 8.4 -8.0 5.0 6.0 8.0 1.3 3.3
1.6 -1 9.5 2.5 5.8 7.9 5.5 1.6 7.9
Output should be:
bad_difficulty
bad_difficulty
2.2 5 9.4 4.7 7.3 1.9 5.7 6.0 7.1
bad_judges
2.1 7 7.9 4.9 0.0 7.2 9.1 7.8 6.7 4.3
3.8 5
bad_judges
4.0 7 2.4 1.9 3.2 8.3 14.8 0.1 9.7
2.5 7 8.4 -8.0 5.0 6.0 8.0 1.3 3.3
bad_judges
Current Output:
bad_difficulty
bad_judges
2.2 5 9.4 4.7 7.3 1.9 5.7 6.0 7.1
bad_judges
2.1 7 7.9 4.9 0.0 7.2 9.1 7.8 6.7 4.3
bad_judges
2.0
bad_judges
2.5 7 8.4 -8.0 5.0 6.0 8.0 1.3 3.3
bad_judges
1.6 -1 9.5 2.5 5.8 7.9 5.5 1.6 7.9
这是什么问题? '法官!= 5 ||法官!= 7'对我来说不好。 – LogicStuff
我发表了一个例子。第二个号码的判断号码应该是5或7,否则就是bad_judges – user3328381
你目前得到了什么输出? –