Реализовать функцию замены одного символа на другой в заданной строке - 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;
}

Объяснение кода листинга программы

  1. В функции myfunc() происходит замена всех символов 'o' на 'aa' в строке, которую она принимает в качестве аргумента.
  2. В начале функции определяется счетчик i, который инициализируется нулем.
  3. Далее, в цикле for, происходит проход по всем символам входной строки, начиная со второго символа (так как первый символ - это '\0').
  4. Если текущий символ равен 'o', то к счетчику i добавляется единица.
  5. После прохода по всем символам входной строки, в массиве outp формируется результат.
  6. В начале цикла for в функции main() создается массив outp, размером i, и в него записываются символы из строки a, за исключением 'o'.
  7. Если встречается символ 'o', то вместо него записываются два символа 'a'.
  8. В конце функции main() выводится результат замены на экран.
  9. Затем программа ожидает нажатия клавиши для продолжения работы.
  10. Функция myfunc() возвращает указатель на новую строку, которая содержит результат замены.
  11. Функция main() сохраняет этот указатель в переменной s.
  12. В массиве a содержится строка Hello world!.
  13. Вместо символов 'o' в этой строке будут записаны символы 'aa'.
  14. Это произойдет только в том случае, если в массиве a есть символы 'o'.
  15. Если в массиве a нет символов 'o', то на экран будет выведена исходная строка.
  16. В конце программы вызывается функция system(), которая ожидает нажатия клавиши для продолжения работы.
  17. Возвращаемое значение функции system() игнорируется.
  18. Функция main() возвращает ноль, что означает успешный конец работы программы.
  19. В консоли появится сообщение Press any key to continue....
  20. Для продолжения работы программы необходимо нажать любую клавишу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы