В даном рядке символов удалить слова которые начинаются или заканчиваются с заданного символаю И подсчитать количество удалений
#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;
}
Ответы (1 шт):
Чтобы удалить слова, которые начинаются или заканчиваются с заданного символа, можно использовать функцию 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 из строки.