5.14
#include<iostream>
#include<vector>
#include<string>
using namespace std;
// int main(){
// int case=1;
// switch (case)
// {
// case true:
// string file_name;
// int ival=0;
// int jval;
// case false:
// jval=next_num();
// break;
// default:
// break;
// }
// }
int main(){
vector<string> vs;//存储输入流输入的string对象
vector<int>v1;//存储对string对象的重复次数
vector<string>v2;//存储string对象
string s;
int cnt=1;
int m=1;//下面for循环无法统计最后一个string对象,定义一个变量充当最后一个string对象的标志位
//输入若干string对象 ctrl+d结束
while(cin>>s){
vs.push_back(s);
}
for(auto it=vs.begin();(it+1)!=vs.end();++it){
//前后两个相邻的string对象相同
if(*it==*(it+1)){
++cnt;
++m;
}else{
v1.push_back(cnt);
cnt=1;
v2.push_back(*it);
m=1;
}
}
v1.push_back(m);
auto last=vs.cend();
v2.push_back(*(last-1));
int a=1;
for(size_t i=0;i!=v1.size();++i){
if(v1[i]>a){
a=v1[i];
}
}
if(a==1){
cout<<"没有重复出现的单词"<<endl;
return 0;
}
for(size_t i=0;i!=v1.size();++i){
if(v1[i]==a){
cout<<"单词"<<v2[i]<<"连续出现了"<<a<<"次"<<endl;
}
}
}
5.17
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
vector<int>v1={0,1,1,2};
vector<int>v2={0,1,1,2,3,5,8};
size_t size1=v1.size();
size_t size2=v2.size();
size_t m=(size1>=size2)?size2:size1;
bool flag;//标志位 是否是前缀数组
if(m==size1){
for(size_t i=0;i!=m;++i){
if(v1[i]==v2[i]){
flag=true;
continue;
}
flag=false;
break;
}
}else{
for(size_t i=0;i!=m;++i){
if(v2[i]==v1[i]){
flag=true;
continue;
}
flag=false;
break;
}
}
cout<<flag<<endl;
};
5.19
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
string rsp;//作为循环的条件,不能定义在do的内部
do
{
cout<<"请输入两个string对象"<<endl;
string s1,s2;
cin>>s1>>s2;
if(s1.size()>=s2.size()){
cout<<s2<<endl;
}else{
cout<<s1<<endl;
}
cout<<"想继续输入?是请输入yes,否输入no"<<endl;
cin>>rsp;
} while (!rsp.empty()&&rsp[0]!='n');//rsp为空或者输入no跳出循环
}
5.20
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
string fs,s,pre_s;//定义string对象
if(cin>>fs){ //输入第一个string对象
pre_s=fs;
while(cin>>s){ //连续输入s
if(s==pre_s){
cout<<s<<endl;
break;
}else{
pre_s=s;
cout<<"没有单词时连续出现的"<<endl;
}
}
}
return 0;
}
5.21
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
string fs,s,pre_s;//定义string对象
if(cin>>fs){ //输入第一个string对象
pre_s=fs;
while(cin>>s){ //连续输入s
// if(isupper(s[0])&&s==pre_s){
// cout<<s<<endl;
// break;
// }
// if(!isupper(s[0])||s!=pre_s){
// pre_s=s;
// cout<<"没有重复的单词"<<endl;
if(!isupper(s[0])){
cout<<"继续输入单词"<<endl;
continue;
}
if(s==pre_s){
cout<<s<<endl;
break;
}else{
pre_s=s;
cout<<"没有单词时连续出现"<<endl;
}
}
}
return 0;
};
5.24
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
int v1,v2;
cin>>v1>>v2;
if(v2==0){
throw runtime_error("被除数不能为0");
}
cout<<v1/v2<<endl;
return 0;
}
5.25
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main(){
int v1,v2;
while(cin>>v1>>v2){
try{
if(v2==0){
throw runtime_error("被除数不能为0");
}
cout<<v1/v2<<endl;
}
catch(runtime_error err){
cout<<err.what()<<"是否重新输入新数并重新执行try语句? y n"<<endl;
char c;
cin>>c;
if(!cin||c=='n'){
break;
}
}
}
return 0;
}