Тогда нам нужен новый массив n + k*2, так же запоминаем позиции где были точки, предполодим i, и вставляем на i + 1, i + 2 точки, не?
А как запомнить где были точки i?
pair<char*, size_t> replaceDotWithThree(char *s, size_t len) { size_t dots = std::count(s, s + len, '.'); size_t new_len = len + dots * 2; char* res = new char[new_len ]; for (size_t i = 0, j = 0; i < len; ++i) { res[j++] = s[i]; if (s[i] == '.') { res[j++] = '.'; res[j++] = '.'; } } return { res, new_len} ; }
А зачем? Суть в том, чтобы посчитать, перевыделить массив нужного количества, а затем в него скопировать исходный, добавляя две точки после каждой встреченной точки
А в этом способе что такое len, остальную часть решения я понял
ну длина динамического массива
Второй аргумент, который ты даёшь функции сам
Отлично работает, спасибо, только как убрать ошибку Debug error, когда программа отрабатывает?
Этот метод не выводит в консоль, потом нужно вывести.
Обсуждают сегодня