Доброго времени суток.  
 
 Дано осмысленное текстовое сообщение(содержащее слова,разделенные пробелами,знаками препинания,в конце сообщения стоит точка). Поменять слова в сообщении по принципу: первое со вторым,третье с четвертым и т.д.
Проблема номер раз: не представляю по какому алгоритму это делать. Вот задумка  : 
1)находим в исходной строке первое слово,выделяем как подстроку,копируем в строку№1, находим второе слово и 2)копируем его в строку№2;
3)удаляем из исходной строки 2 этих слова;
4)в новую строку№3 вставляем строку№2,а затем строку№1.
5)очищаем строку№1 и строку№2.
Все это будет происходить в цикле.
не ругайте громко,пожалуйста( строки в С++ это для меня больная тема...
вот код:
- #include <iostream> 
- #include <string> 
-  using namespace std; 
- int main() 
- { 
- string str,s1,s2,s;  // str- ishodnaya srtoka 
- string razdel=",.;:!-? "; 
- string::size_type k=0, pos=0,k2=0; 
-  cout<<"vvedite srtoku:"; 
-  getline(cin,str); 
- k=str.find_first_of(razdel,pos); 
- k2=str.find_first_of(razdel,k+1); 
-   
-  while (k!=string::npos) 
- { 
- s1=str.substr(pos,k-pos); 
- s2=str.substr(k+1,k2-(k+1)); 
- s.append(s2); 
- s.append(s1); 
- str.erase(k2-pos,pos); 
- if (ispunct(str[k]))          
-  pos=k+2;                     
-  else pos=k+1;   
-  s1.erase(k,pos); 
-  s2.erase(k2,pos);   
- k=str.find_first_of(razdel,pos); 
- k2=str.find_first_of(razdel,k+1); 
-   
- } 
- cout<<s<<"\t"; 
-        
-      cin.get(); 
-      cin.get(); 
-      return 0;} 
-   
  программа компилируется,но как только я ввожу исходную строку и нажимаю enter ,программа прекращает работу.