C/C++

Помогите пожалуйста с задачей со строками на С++

Буду очень благодарен за помощь, спасибо заранее !

Дана строка, состоящая из слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, заменив в нем все предыдущие вхождения его последней буквы на символ «.» (точка). Например, слово «MINIMUM» надо преобразовать в «.INI.UM». Количество пробелов между словами не изменять.

Пример 1
Ввод
MINIMUM MAXIMUM
Вывод
.INI.UM .AXI.UM

Пример 2
Ввод
TEST NO TEXT
Вывод
.EST NO .EXT

Пример 3

Ввод
THERE IS NO TEXT
Вывод
TH.RЕ IS NO .EXT
 #include  
#include
#include
#include

using namespace std;

void task(string& line) {
static const auto dot{ '.' };
istringstream iss(line);
map box;
string key;
while (iss >> key) {
auto value = key;
auto last = value.length() - 1;
for (size_t i = 0; i < last; ++i) {
auto back = value.back();
if (value[i] == back) {
value[i] = dot;
if (box.contains(key)) box[key] = value;
else box.insert({ key, value });
}
}
}
for (const auto& [k, v] : box) {
auto pos = line.find(k);
while (pos != string::npos) {
line = line.replace(pos, v.size(), v);
pos = line.find(k);
}
}
}

int main() {
string line;
cout
Слава Стофориади
Слава Стофориади
95 712
Лучший ответ
 #include   
#include

using namespace std;

void task(string& line)
{
char letter{};
for (auto it = line.rbegin(); it != line.rend(); it++)
{
if (*it == ' ')
{
letter = 0; continue;
}
if (!letter)
{
letter = *it;
continue;
}
if (*it == letter) *it = '.';
}
}

int main() {
string line;
cout
Мне проще решать те задания в excel-e, но Вам необходимо на С++. В принципе могу, но не имею желания убить свой вечер. Попробуйте лучше самостоятельно. Зато Ваша победа обернётся Вам с лихвой. Сначала просто начните думать, глядишь - втянетесь и победите.