|
发表于 2023-8-30 21:14:35
|
显示全部楼层
问题出在你的代码中,你在每次找到匹配的单词时都会输出计数器i的值,导致i的值被重复输出了。
解决这个问题的方法是,在每次找到匹配的单词时,只输出一次计数器i的值,而不是每次都输出。你可以使用一个变量flag来判断是否已经输出过i的值,如果没有输出过,则输出i的值,并将flag设置为true,以后再找到匹配的单词时就不再输出i的值了。
修改后的代码如下:
- #include<bits/stdc++.h>
- using namespace std;
- map<string,int>a;
- int main(){
- string n,temp;
- int i = 0, cnt = -1;
- bool flag = false; // 添加一个标志变量flag
- cin >> n;
- transform(n.begin(), n.end(), n.begin(), ::tolower);
- while(cin >> temp){
- cnt++;
- transform(temp.begin(), temp.end(), temp.begin(), ::tolower);
- if(temp == n){
- i++;
- if(a[temp] == 0){
- cout << cnt << " ";
- }
- if(!flag){ // 如果flag为false,输出i的值
- cout << i;
- flag = true; // 将flag设置为true
- }
- }
- }
- if(a[temp] == 0){
- cout << "-1";
- }
- else{
- cout << i;
- }
- }
复制代码
这样修改后,代码应该就能正确输出结果了。 |
|