#include <iostream>
#include <string>
#include <locale>
using namespace std;
int main()
{
locale::global(locale("rus_rus.866"));
wstring str_input, //Исходная строка
str_protocol; //Протокол просмотра
wcout << L"Введите строку:" << endl;
getline(wcin,str_input);
//Указатели на начало и конец строки
wchar_t *index_begin_1,
*index_begin_2,
*index_end_1,
*index_end_2;
index_begin_1 = index_begin_2 = &str_input[0];
index_end_1 = index_end_2 = &str_input[str_input.size()-1];
do{
index_begin_1++;
//Поиск группы одинаковых символов слева направо
while( *index_begin_2 != *index_begin_1 && index_begin_2 <= index_end_1 ){
str_protocol += *index_begin_2;
index_begin_2 = index_begin_1;
index_begin_1++;
}
//Пропуск одинаковых символов
if( *index_begin_1 == *index_begin_2 && index_begin_2 <= index_end_1 ){
str_protocol+=L'_';
do{
index_begin_1++;
} while ( *index_begin_1 == *index_begin_2 );
index_begin_2 = index_begin_1;
}
//Поиск группы одинаковых символов справа налево
index_end_1--;
while ( *index_end_1 != *index_end_2 && index_end_2 >= index_begin_1 ){
str_protocol += *index_end_2;
index_end_2 = index_end_1;
index_end_1--;
}
//Пропуск одинаковых символов
if( *index_end_1 == *index_end_2 && index_end_2 >= index_begin_1 ){
str_protocol+=L'_';
do{
index_end_1--;
} while ( *index_end_1 == *index_end_2);
index_end_2 = index_end_1;
}
}while( index_begin_1 <= index_end_1 );
wcout << str_protocol << endl << endl;
system("PAUSE");
return 0;
}
Введите строку:
ПРППАВВКЛЛРСШ
ПР_ШСР_А_К
Для продолжения нажмите любую клавишу . . .
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.