小菜b求大神解答,所有分数送上,希望能指出存在的问题,今晚坐等。。
程序是这样子滴从输入中读取若干string对象并查找连续重复出现的单词(一个单词后面紧跟着这个单词本身)。要求记录连续重复出现的次数以及对应单词。如果存在,输出重复出现次数最多的单词及数目。例如: how now now now brown cow cow,答案是now出现了三次。
******************************************************************************************
#include<iostream>
#include<vector>
#include<string>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
void main()
{
vector<string> v; //这个是存放单词的
vector<int> v1; //这个是存放每个重复过的单词的容器,奇数位是单词在容器v中的位置,以便于比较后输出,偶数位是对应奇数位重复出现的最大数字
vector<int> v2; //这个是比较v1的遍数哪个大,将大的存在里面
string i;
int n1 = 1;
while (cin >> i)
v.push_back(i);
int j = v.size();
int n = 0,n1=0;
for (n; n + 1 <= j; ++n)
{
if (v[n] == v[n + 1])
{
++n1;
}
if ((v[n] != v[n + 1])&&(n1>0)) //有过重复,但这次不是,就把这个重复记录对应的v中的单词位置,重复次数放入v1中
{
v1.push_back(n1);//n1遍
v1.push_back(n-1);//v中的单词位置,用于以后输出
}
}
for (j = 0; j < (v1.size() / 2); j += 2)
{
int t;
if (v1[j] < v1[j + 2]) //哪个重复次数多就把谁放入v2中
{
v2.push_back(v1[j + 2]);
v2.push_back(v1[j + 3]);
}
else {
v2.push_back(v1[j]);
v2.push_back(v1[j + 1]);
}
cout << "出现次数最多的单词是" << v[v2[1]] << endl;
cout << "出现次数是" << v1[v2[0]] << endl;
}
}