Ideas de resolución de problemas:
(1) Almacene todas las palabras primero, luego insértelas en orden inverso
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string change(string &s) {
vector<string> v;
string str="";
int i=0;
while(i<s.length()) {
if(('a'<=s[i] && s[i]<='z') ||('A'<=s[i] && s[i]<='Z')) {
while(i<s.length() && (('a'<=s[i] && s[i]<='z') || ('A'<=s[i] && s[i]<='Z'))) {
str+=s[i++];
}
v.push_back(str);
str="";
} else i++;
}
str="";
for(int i=v.size()-1;i>=0;i--) {
str+=v[i];
str+=" ";
}
return str.substr(0,str.length()-1);
}
int main() {
string s;
while(getline(cin,s)) {
//cout<<s<<endl;
cout<<change(s)<<endl;
}
return 0;
}