В даном рядке символов удалить слова которые начинаются или заканчиваются с заданного символаю И подсчитать количество удалений

Рейтинг: -2Ответов: 1Опубликовано: 20.01.2023
#include<iostream>
#include<ctime>
#include <stdio.h> 
#include <cstring>
#include<algorithm>
#include<cstdlib>
using namespace std;
int main(){
   string s;
   cout<<"Vedite symbol i stroku cheres probill : ";
    char c;
    cin >> c;
    fflush(stdin);
    cin>>s;
    int n=0;    // Если первое слово начинается из заданого символа
    if(s[0]==c)
    {
        int k = 0;
        while(s[k]!=' ')
        {
            cout << s[k];
            k++;
        }
        cout << endl;
    }
    // Получаем длину строки
         for(int  i = 0; i < s.size(); i++)
    {
        // Если i-й элемент равен пробелу и следующий равен символу, то выводим
        if(s[i] == ' ' && s[i+1] == c)
        {
            
            i++; // Добавляем счетчик для перехода на следующий символ
            while(s[i]!=' ' && s[i]!='\0') // Пока не дошли до следующего слова и не конец строки
            {
                s.erase(c);
            }
            // Минусуем счетчик, так как щас он находится на 1 позицию больше чем нужно
            cout << endl;
        }
        if(s[i] == ' ' && s[i-1] == c)
        {
            
            i++; // Добавляем счетчик для перехода на следующий символ
            while(s[i]!=' ' && s[i]!='\0') // Пока не дошли до следующего слова и не конец строки
            {
                s.erase(c);
                n++;
            }
            // Минусуем счетчик, так как щас он находится на 1 позицию больше чем нужно
            cout << endl;
        }
        
    }
    cout << s << endl;
   cout << "counter: " << n << '\n';
    return 0;
}

Ответы

▲ 0

Чтобы удалить слова, которые начинаются или заканчиваются с заданного символа, можно использовать функцию erase() из библиотеки string. Например, следующий код удаляет из строки s все символы c:

s.erase(remove(s.begin(), s.end(), c), s.end());

Чтобы подсчитать количество удаленных слов, можно создать переменную n и инкрементировать ее при каждом удалении слова. В Вашем коде, счетчик n инкрементируется в конце условного оператора, который отвечает за удаление слова заканчивающегося на c

while(s[i]!=' ' && s[i]!='\0') // Пока не дошли до следующего слова и не конец строки
        {
            s.erase(c);
            n++;
        }

Чтобы удалить слова, которые начинаются или заканчиваются с заданного символа, можно использовать функцию erase() из библиотеки string. Например, следующий код удаляет из строки s все символы c:

Copy code s.erase(remove(s.begin(), s.end(), c), s.end()); Чтобы подсчитать количество удаленных слов, можно создать переменную n и инкрементировать ее при каждом удалении слова. В Вашем коде, счетчик n инкрементируется в конце условного оператора, который отвечает за удаление слова заканчивающегося на c

while(s[i]!=' ' && s[i]!='\0') // Пока не дошли до следующего слова и не конец строки
        {
            s.erase(c);
            n++;
        }

Но в данном коде используется erase с одним аргументом, который удаляет все вхождения символа c из строки.