В заданном предложении найти наибольшее количество идущих подряд пробелов
В заданном предложении найти наибольшее количество пробелов, что расположены подряд. Исключить из данного предложения длинные последовательности пробелов. 1 часть я уже решил , я просто не понял как решить 2-ю я знаю что мне надо использовать функцию erase .
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
cout<<"Enter text: ";
getline(cin,s);
int k = 0;
int max = 0;
int str = s.length();
for(int i = 0; i< str; i++){
if(s[i] == ' '){
k++;
}else{
k = 0;
}if(k>max){
max = k;
}
}
cout<<s.erase(max);
return 0;
}
Ответы (1 шт):
Ну если я вас правильно понял, то у вас не получается удалить последовательность пробелов длинной max.
Строчкой:
s.erase(max);
Вы удаляете все символы начиная с индекса max.
А вам нужно удалить max символов начиная с начала последовательности.
Например при проверке:
if(k > max){
max = k;
index = i;
}
index - индекс последнего символа в самой длинной последовательности.
И далее пишите так:
cout << s.erase(index - max, max);
То есть index - max это индекс начала последовательности, max это кол-во сколько нужно удалить символов.
Поподробней про erase можно почитать тут
Пример выхода программы:
Enter text: Privet mir kak dela ?
Privet mi kak dela ?