Помощь с программой по строкам

на данном сайте нашел решение программы, которые мне требовалось: удалить строку заключенную между круглыми скобками(скобки тоже удаляются), без использования библиотеки string, но нужно решить это с помощью подпрограммы, но я столкнулся с трудностями в перестроении программы. Помогите, пожалуйста. Например, из введенной строки hello(my)world получится строка helloworld

Код программы:

#include <iostream>
#include <cstdio>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUSSIAN");
 
    char str[100], *ptr;
    char n_str[100] = "\0", *n_ptr;     
    cout << "Введите строку:";
    cin >> str;
    
 
    ptr = str;
 
    while (*ptr) {      
        n_ptr = n_str;
 
        while (*ptr != '(' && *ptr) {
            *n_ptr = *ptr;
            n_ptr++; ptr++;
 
             
             
            if (*ptr == '(') {
                *ptr++;
 
                while (*ptr != ')')
                    ptr++;
 
                ptr++; 
            }
        }
    }
 
    *n_ptr = '\0';
    cout << "Новая строка: " << n_str << endl;
 
    return 0;
}

Ответы (2 шт):

Автор решения: Harry

Ладно, раз Павел просит...
только я не буду переделывать этот "ужас, летящий на крыльях ночи" (с) - хотя бы потому, что программа обрабатывает слово, а не строку. Я напишу свой.

char * delPar(char * s)
{
    char * p = s;
    while(*p && *p != '(') p++;
    if (*p)
    {
        char * n = p;
        while(*n && *n != ')') n++;
        if (*n++) while(*p++ = *n++);
    }
    return s;
}

int main()
{
    //setlocale(LC_ALL, "RUSSIAN");
 
    char str[100];
    cout << "Введите строку:";
    if (cin.getline(str,100))
    {
        cout << delPar(str);
    }
}
→ Ссылка
Автор решения: Павел Ериков

Вдруг если вам пригодится удаление нескольких частей заключенных в круглые скобки, то вот пример функции:

char* delPars(char* s) {
char* ptr = s;
while (*ptr && *ptr != '(') ++ptr;
//Указатель на конец части строки без скобок 
//(все что левее это промежуточный результат)
char* sptr = ptr;
while (*ptr) {
    //Доходим до закрывающей скобки
    while (*ptr && *ptr != ')') ++ptr;
    //Если мы дошли именно до неё а не до конца строки
    if (*ptr == ')') {
        //Пропускаем её и начинаем копировать нужный отрезок
        ++ptr;
        while (*ptr && *ptr != '(') {
            *sptr = *ptr;
            ++ptr;
            ++sptr;
        }
    }
}
//Если указатель на конец нужной части == указателю начала все строки
//значит ничего удалено не было, иначе обрезаем строку
if (sptr != s) *sptr = '\0';
return s;
}

Результат данной функции: введите сюда описание изображения

→ Ссылка