Доброго времени суток.
Дано осмысленное текстовое сообщение(содержащее слова,разделенные пробелами,знаками препинания,в конце сообщения стоит точка). Поменять слова в сообщении по принципу: первое со вторым,третье с четвертым и т.д.
Проблема номер раз: не представляю по какому алгоритму это делать. Вот задумка :
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 ,программа прекращает работу.