Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
25 / 25 / 15
Регистрация: 12.10.2013
Сообщений: 183

Функция удаления текста в скобках

02.03.2015, 11:16. Показов 1731. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание: Написать функцию, которая из строки удаляет подстроки, заключенные в круглые скобки. Написать программу, которая принимает от пользователя набор строк и удаляет из всех строк этого набора подстроки, заключенные в круглые скобки. Использовать написанную функцию.
Есть условие: В первом варианте функция должна принимать в качестве параметра одну (!) С-строку с использованием механизма передачи ее через указатель, во втором - одну(!) строку класса string с использованием механизма передачи ее по ссылке.
Есть проблема: При передаче c-строки выкидывает на внутреннем копировании. Есть подозрение, что пытается скопироваться весь двухмерный массив, но как это поправить - опыт не позволяет, а что гуглить - не позволяет "ДА ЧТО ЗА ЧЕРТОВЩИНА ТУТ ТВОРИТСЯ".

Заранее всем спасибо!
Любым советам по улучшению кода буду рад, только учусь (всё еще).

Функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void remover(char *arr, const int len){ 
    int cpyOfLen = len;
    std::cout << "C-Line is " << arr << " with len: " << len << '\n';
    char *openPos, *closePos;
    char copyOf[255];
    strcpy_s(copyOf, cpyOfLen, arr); //Вот тут выкидывает, ага!
    while (1){
        openPos = strrchr(copyOf, '(');
        closePos = strrchr(copyOf, ')');
        //std::cout << openPos << ' ';
        if ((openPos == NULL) | (closePos == NULL))
            break;
        else if (openPos > closePos){
            memset(copyOf, 0, cpyOfLen);
            cpyOfLen = cpyOfLen - (int)*openPos;
            strcpy_s(copyOf, cpyOfLen, arr);
            //std::cout << "copyOf: " << copyOf << '\n';
        }
    }
    //std::cout << '\n';
}

Тело:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
int main(int argc, char *argv[]){
    std::string *address;
    unsigned int records = 0, length = 0;
 
    while (records < 1){
        std::cout << "Enter ammount of records: "; std::cin >> records; std::cin.ignore();
    }
 
    char **lineC = new char* [records];
    std::string *line = new std::string[records];
 
    for (unsigned int j = 0; j < records; ++j){
        lineC[j] = new char[255];
    }
 
    //Заполнение массивов, начало!
    for (unsigned int i = 0; i < records; ++i){
        do{
            std::cout << "Input " << i + 1 << " line, shorter than 255 symbols: "; std::getline(std::cin, line[i]); //string line
        } while (line[i].length() > 255);
        strcpy_s(lineC[i], line[i].size() + 1, line[i].c_str());    
    }
    //Заполнение массивов, конец
 
 
    for (unsigned int i = 0; i < records; ++i){
        length = line[i].length();
        address = &line[i];
        remover(*address);
        remover(lineC[i], length);
        //std::cout << "remover(&s) line: " << line[i] << '\n';
    }
    system("pause");
    return 0;
}

Функция, не вызывающая проблем:
C++
1
2
3
4
5
6
7
8
9
10
11
void remover(std::string& s){
    int openPos = s.size(), closePos = 0;
    while(1){
        openPos = s.find_last_of('(', openPos-1);
        closePos = s.find(')', s.find_last_of('(', openPos));
        if ((openPos == -1) | (openPos == 0 && closePos == -1))
            break;
        else if ((openPos != -1) && (closePos != -1))
            s.erase(openPos, closePos - openPos + 1);
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2015, 11:16
Ответы с готовыми решениями:

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...

Функция нахождения и удаления из текста слов- палиндромов
Не могли бы помочь в написании функции,которая будет удалять палиндромы в тексте,который был введен.

Дана строка, в которой имеется текст в скобках. Написать программу удаления части текста, заключенного в скобки, вместе со скобками
Дана строка, в которой имеется текст в скобках. Написать программу удаления части текста, заключенного в скобки, вместе со скобками....

1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.03.2015, 13:21
C++
1
strcpy_s(copyOf, 255, arr);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2015, 13:21
Помогаю со студенческими работами здесь

Функция удаления слов из текста, оставить только цифры в числовом формате
Здравствуйте, есть вопрос по дополнению функции, как сделать так, чтобы цифры получались не такими обычными а такими с пробелами после...

Команда для удаления всего что в скобках
Возможно ли сформировать запрос к БД, чтобы удалить в конкретном столбце любые слова, заключенные в скобки (), а так же сами скобки?

Функция в скобках
Здравствуйте, форумчане, читаю книгу Девида Фленагана &quot;JavaScript: полное руководство&quot;, 6-е издание. Добрался до главы...

Выделение текста в скобках
допустим есть текст тест тест2 (тест3) тест4 (тест5) как сделать чтобы слова в скобках были вынесены в отдельный массив?

Выделение курсивом текста в скобках
имеется большой текст почти в каждом параграфе часть (текста) надо перевести в (курсив), а точнее текст в (скобках) можно ли это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru