Реализовать функцию замены одного символа на другой в заданной строке - C++
Формулировка задачи:
Нужно написать функцию для замены символа 'о' на "аа" .
Не использовать стандартную библиотеку шаблонов, возвращаемое значение типа char* .
Задачка простая, интересуют только способы её решения. Свой вариант изложу вечером, т.к. С телефона.
Решение задачи: «Реализовать функцию замены одного символа на другой в заданной строке»
textual
Листинг программы
#include <iostream>
using namespace std;
char* myfunc(char* source)
{
int i(0);
for (int k=1; source[k] != '\0'; k++)
{
i++;
if (source[k] == 'o')
i++;
}
char* outp = new char[i];
int k=0;
for (int j=0; source[j] != '\0'; j++)
if (source[j] != 'o')
{
outp[k] = source[j];
k++;
}
else
{
outp[k++] = 'a';
outp[k++] = 'a';
}
outp[k]=0; // забыли терминальный ноль
return outp;
}
int main()
{
char a[] = "Hello world!"; // a нежелательно делать указателем на константную строку
char* s = myfunc(a);
cout << s << endl;
system("pause");
return 0;
}
Объяснение кода листинга программы
- В функции myfunc() происходит замена всех символов 'o' на 'aa' в строке, которую она принимает в качестве аргумента.
- В начале функции определяется счетчик i, который инициализируется нулем.
- Далее, в цикле for, происходит проход по всем символам входной строки, начиная со второго символа (так как первый символ - это '\0').
- Если текущий символ равен 'o', то к счетчику i добавляется единица.
- После прохода по всем символам входной строки, в массиве outp формируется результат.
- В начале цикла for в функции main() создается массив outp, размером i, и в него записываются символы из строки a, за исключением 'o'.
- Если встречается символ 'o', то вместо него записываются два символа 'a'.
- В конце функции main() выводится результат замены на экран.
- Затем программа ожидает нажатия клавиши для продолжения работы.
- Функция myfunc() возвращает указатель на новую строку, которая содержит результат замены.
- Функция main() сохраняет этот указатель в переменной s.
- В массиве a содержится строка
Hello world!. - Вместо символов 'o' в этой строке будут записаны символы 'aa'.
- Это произойдет только в том случае, если в массиве a есть символы 'o'.
- Если в массиве a нет символов 'o', то на экран будет выведена исходная строка.
- В конце программы вызывается функция system(), которая ожидает нажатия клавиши для продолжения работы.
- Возвращаемое значение функции system() игнорируется.
- Функция main() возвращает ноль, что означает успешный конец работы программы.
- В консоли появится сообщение
Press any key to continue.... - Для продолжения работы программы необходимо нажать любую клавишу.