8978. Делаем срезы 3

 

Задано строку s. Произведите над ней следующий набор операций.

 

Вход. Строка s, содержащая более 10 символов. Индексация в строке начинается с 1.

 

Выход. В отдельных строках выведите ответы на следующие запросы:

·        Слово, образующие второй, четвертый и десятый символ строки s.

·        Слово, образующие первый, второй и последний символ строки s.

·        Слово, образуют пять последних символов строки s.

·        Строка s без четырех последних символов.

·        Слово, образованное всеми символами с четными индексами.

·        Длину слова из предыдущего пункта.

·        Все символы строки s через один в обратном порядке, начиная с последнего.

 

Пример входа

Пример выхода

abrakadabra

bar

aba

dabra

abrakad

arkdba

6

abdkra

 

 

РЕШЕНИЕ

строки

 

Анализ алгоритма

Если к входной строке в начале приписать пробел, то первый символ строки будет находиться в первой ячейке s[1]. Таким образом индексация не будет нарушена. Последний символ в строке находится в индексе s.length() – 1 и он равен s[s.length() – 1].

 

1.     Второй, четвертый и десятый символ строки s: s[2] + s[4] + s[10].

2.     Первый, второй и последний символ строки s: s[1] + s[2] + s[s.length() – 1].

3.     Пять последних символов строки s: s.substr(s.length() – 5).

4.     Строка s без четырех последних символов: следует вырезать подстроку от символа 1 длиной s.length() – 5: s.substr(1, s.length() – 5).

5.     Слово, образованное всеми символами с четными индексами: создадим новую строку, занесем в нее символы, стоящие на четных индексах (2, 4, 6, …).

6.     Длина слова из предыдущего пункта: воспользуйтесь методом length().

7.     Все символы строки s через один в обратном порядке, начиная с последнего:  создадим новую строку, занесем в нее символы, стоящие на соответствующих индексах (s.length() – 1, s.length() – 3, …).

 

Реализация алгоритма

Читаем входную строку. Припишем к ней в начале пробел, чтобы индексация начиналась с 1.

 

cin >> s; s = " " + s;

 

Генерируем ответы на запросы и выводим их.

 

s1 = "";

s1 = s1 + s[2] + s[4] + s[10];

cout << s1 << endl;

 

s2 = "";

s2 = s2 + s[1] + s[2] + s[s.length() - 1];

cout << s2 << endl;

 

s3 = s.substr(s.length() - 5);

cout << s3 << endl;

 

s4 = s.substr(1, s.length() - 5);

cout << s4 << endl;

 

s5 = "";

for (i = 1; i < s.length(); i++)

  if (i % 2 == 1) s5 = s5 + s[i];

cout << s5 << endl;

 

cout << s5.length() << endl;

 

s6 = "";

for (i = s.length() - 1; i > 0; i -= 2)

  s6 = s6 + s[i];

cout << s6 << endl;