【2019天梯赛L1-8】还是只有14分,弃题了

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    getchar(); 
    while(n--){
    	string s;
    	getline(cin,s);
    	cout<<s<<endl<<"AI: ";
    	istringstream in(s);
    	string word;
    	vector<string> words;
    	while(in>>word){
    		words.push_back(word);
		}
		for(auto &word:words){
			int n = word.size();
			int p=-1;
			for(int k=0;k<n;k++){
				if(ispunct(word[k])){
					p=k;
					break;
				}
			}
			if(p!=-1){
				string left = word.substr(0,p),mid = word.substr(p,1),right = word.substr(p+1);
				if(mid=="?")	mid="!";
				int f=0;
				if((left=="can"||left=="could")&&right=="you"){
					right = left;
					left = "I";
					f=1;
				}
				if(!f&&(left=="I"||left=="me")) left="you";
				if(!f&&(right=="I"||right=="me")) right="you";
				word = left+mid+right;
			}
		}
		for(auto &word:words){
			for(auto &w:word){
				if(isalpha(w)&&w!='I'){
					w = tolower(w);
				}
			}
		}
		for(int i=0;i<words.size()-1;i++){
			int f=0;
			if((words[i]=="can"||words[i]=="could")&&words[i+1]=="you"){
				words[i+1] = words[i];
				words[i] = "I";
				f=1;
				i++; 
			}
			if(!f&&(words[i]=="I"||words[i]=="me")){
				words[i]="you";
			}
		}
		cout<<words[0];
		for(int i=1;i<words.size();i++){
			if(ispunct(words[i][0])){
				cout<<words[i];
			}else{
				cout<<" "<<words[i];
			}
		}
		cout<<endl;
	}
    return 0;
}

猜你喜欢

转载自blog.csdn.net/Csdn_jey/article/details/88955091
今日推荐