C++primer 第四版6.12:练习题
/*編寫一個小程序,從標準輸入讀入一系列 string 對象,
 6.12: 尋找連續重復出現的單詞。程序應該找出滿足以下條件的
 單詞的輸入位置:該單詞的后面緊跟著再次出現自己本
 身。跟蹤重復次數最多的單詞及其重復次數。輸出重復次
 數的最大值,若沒有單詞重復則輸出說明信息。例如,如
 果輸入是:how, now now now brown cow cow?
 則輸出應表明“now”這個單詞出現了三次。*/
int main(void)
 {
 ?? ?string str; vector<string>strs; int count = 1; vector<int>num; int x=0;
 ?? ?cout << "請輸入單詞按ctrl+z退出" << endl;
 ?? ?while (cin >> str)
 ?? ??? ?strs.push_back(str);
 ?? ?for (size_t i=1;i!=strs.size();i++)//定位每個單詞出現的次數
 ?? ?{
 ?? ??? ?if(strs[i-1]==strs[i])
 ?? ??? ??? ?++count;
 ?? ??? ?else
 ?? ??? ??? ?count = 1;
 ?? ??? ?num.push_back(count);
 ?? ?}
 ?? ?num.push_back(1);//最后一個單詞次數設置為1
 ?? ?for (size_t i = 0; i != num.size(); i++)//判斷單詞出現最大值
 ?? ??? ?if (x < num[i])
 ?? ??? ??? ?x = num[i];
 ?? ?int x1;
 ?? ?for (size_t i = 0; num[i]!=x; i++)
 ?? ??? ?x1 = i+1;//判斷最大值定位單詞顯示+1是剛好定位到x元素位置不然循環會停止于x之前的元素
 ?? ?
 ?? ?for (size_t i = 1; i != num.size(); i++)//判斷無重復單詞顯示
 ?? ?{
 ?? ??? ?if(num[i-1]==1&&i==1)
 ?? ??? ??? ?cout << "“" << strs[0] << "”" << "無重復" << endl;//判斷第一個單詞無重復
?? ??? ?if(i<num.size()-1)
 ?? ??? ?if (strs[i] != strs[i - 1] && strs[i] != strs[i + 1])//判斷其他單詞是否重復
 ?? ??? ??? ?cout << "“" << strs[i] << "”" <<"無重復" << endl;
 ?? ??? ?if (num[num.size() - 1] == 1&&i==num.size()-1&&(strs[num.size()-1]!=strs[num.size() - 2]))
 ?? ??? ??? ?cout << "“" << strs[num.size() - 1] << "”" << "無重復" << endl;//判斷最后一個單詞無重復
 ?? ?}
?? ?cout <<"“"<<strs[x1] <<"”" <<"這個單詞出現了"<< x<<"次";
 ?? ?return 0;
 }
總結
以上是生活随笔為你收集整理的C++primer 第四版6.12:练习题的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 苹果7和7plus哪个实用
- 下一篇: 正直播:感动中国2022年度人物盛典!名
