Предмет: Информатика, автор: drevozna

(C++) У даному тексті замінити всі символи «.» на послідовність символів «...». Якщо у тексті зустрічаються підряд три крапки, то залишити ix без змін.

Ответы

Автор ответа: Adelle12
2

#include <iostream>

using namespace std;

int main()

{

   

   string str;

   cout << "Old string:\n";

   getline(cin,str);//если cin >> str, то считывание лишь до первого пробела

   for (int i=0; i < str.length(); i++) //таким образом перемещаемся по элементах строки

   {

       if (str[i] == '.')// если в тексте найдено точку...

       {

           if (str[i + 1] == '.' && str[i + 2] == '.') // ...если дальше есть две точки подряд...

           i+=2;//...то идти дальше: i+=2 здесь и i++ в условии цикла - итого перепрыгнуть через те две точки (i+=3)

           else //если дальше нет двух точек подряд...

           {

               for (int j = 0; j < 2; j++)// ...то по одной...

               {

               str.insert(i, ".");// ..."создать" их, используя функцию str.insert(pos,key), где первый аргумент - позиция вышенайденной точки, перед которой "создаём" точку (вставляем 2-й аргумент)

               i++;//мы сейчас на новосозданной точке, поэтому идти дальше: переместиться на один символ вперёд - итого мы сейчас на той точке, которую мы не создавали и которая была в Old string

               }

   }}}

   

   cout << "New string =\n" << str;

   return 0;

}

Похожие вопросы
Предмет: Русский язык, автор: Лопатушка
Предмет: Русский язык, автор: марьямка3