Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534

Удалить из каждой строки последовательность символов заключённую между двумя очередными появлениями заданного символа

20.05.2021, 13:10. Показов 6078. Ответов 65
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Составить программу обработки массива символов с помощью указателей, которая вводит текст из произвольного количества строк, а затем удаляет из каждой строки последовательность символов, заключённую между двумя очередными появлениями заданного символа, и выводит полученный результат. Обработку строки текста оформить как функцию.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2021, 13:10
Ответы с готовыми решениями:

Исключить последовательность символов, заключенную между двумя определенными символами
.исключить последовательность символов заключенную между двумя определенными символами

Из заданного текста удалить последовательность символов между двумя апострофами
Из заданного текста удалить последовательность символов, расположенных между двумя апострофами. Помогите пожалуйста

Дано предложение. Исключить последовательность символов, заключенную между двумя определенными символами
Дано предложение. Исключить последовательность символов, заключенную между двумя определенными символами.

65
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.05.2021, 11:02
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от goodrogrammer Посмотреть сообщение
чтобы было больше строк
Цитата Сообщение от Folian Посмотреть сообщение
каких строк?
Цитата Сообщение от goodrogrammer Посмотреть сообщение
можете примерно написать буквы
Ц Ф У - примерно буквы. моя твоя не понимать.

Чё писать-то? Чтобы что было?

Добавлено через 23 секунды
Цитата Сообщение от goodrogrammer Посмотреть сообщение
я ввожу одну только строку, а нужно что бы было больше строк
понятн
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 11:03  [ТС]
Folian, программа Volga_ работает там нужно ввести в string буквы и после этого ввести символ, а мне нужно ещё раз написать string чтобы он был 2 раза
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1510
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
26.05.2021, 11:05
goodrogrammer, можно тестировать (я не тестировал):
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
 
char* f(char* str, char symbol)
{
    int len = strlen(str);
    int* ind = new int[len];
    char* ret = new char[len + 1];
    if (ret == NULL)
        return NULL;
    int size = 0, i;
    for (i = 0; i < len; i++)
        if (str[i] == symbol)
        {
            ind[size] = i;
            size++;
        }
    if (size == 0 || size == 1)
    {
        strncpy(ret, str, len + 1);
    }
    else
    {
        int j = 0;
        for (i = 0; i < len; i++)
            if (i<ind[0] || i>ind[size - 1])
                ret[j++] = str[i];
            else
            {
                int k;
                for (k = 0; k < size; k++)
                    if (i == ind[k])
                        ret[j++] = symbol;
            }
        ret[j] = '\0';
    }
    delete[] ind;
    return ret;
}
 
int main()
{
    int i, n;
    cout << "Enter number of strings: n = ";
    cin >> n;
 
    char str[100][100];
    cout << "Enter text:" << endl;
    for (i = 0; i < n; i++)
    {
        cin.ignore();
        cin.getline(str[i], sizeof(str[i]));
    }
    
    char symbol;
    cout << "Enter symbol: ";
    cin >> symbol;
    for (i = 0; i < n; i++)
    {
        char* ret = f(str[i], symbol);
        if (ret)
        {
            cout << ret << endl;
            delete[] ret;
        }
    }
    return 0;
}
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 11:09  [ТС]
Volga_, и надо чтобы в первой строке выводилось 1 b , а во второй 2 b
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.05.2021, 11:13
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <cstring>
#include <cstdio>
 
using namespace std;
 
char* f(char* str, char symbol)
{
    int len = strlen(str);
    int* ind = new int[len];
    char* ret = new char[len + 1];
    if (ret == NULL)
        return NULL;
    int size = 0, i;
    for (i = 0; i < len; i++)
        if (str[i] == symbol)
        {
            ind[size] = i;
            size++;
        }
    if (size == 0 || size == 1)
    {
        strncpy(ret, str, len + 1);
    }
    else
    {
        int j = 0;
        for (i = 0; i < len; i++)
            if (i<ind[0] || i>ind[size - 1])
                ret[j++] = str[i];
            else
            {
                int k;
                for (k = 0; k < size; k++)
                    if (i == ind[k])
                        ret[j++] = symbol;
            }
        ret[j] = '\0';
    }
    delete[] ind;
    return ret;
}
 
int main() 
{
    char str[100] = { 0 };
    
    while(true)
    {
        cout<<"Enter string: ";
        gets(str);
        
        if(str[0])
        {
            char symbol;
            cout<<"Enter symbol: ";
            cin>>symbol;
            std::cin.ignore();
            char* ret = f(str, symbol);
            if (ret)
            {
                cout << ret;
                delete[] ret;
            }
            std::cout << "\n\n";
        } else {
            break;  
        }
    }
    return 0;
}
Пока пустую не введёшь должен работать.
2
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 11:25  [ТС]
Volga_, почему текст и символ сам выводится?

Добавлено через 4 минуты
Folian, программу понял, щас попробую вписать текст

Добавлено через 3 минуты
Folian, можете кроме стринг abcdagggabnm, символ b , ещё дать таких подобных строк
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.05.2021, 11:28
Цитата Сообщение от goodrogrammer Посмотреть сообщение
можете кроме стринг abcdagggabnm, символ b , ещё дать таких подобных строк
В смысле?
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 11:30  [ТС]
Volga_, Folian, это норм?
Миниатюры
Удалить из каждой строки последовательность символов заключённую между двумя очередными появлениями заданного символа  
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.05.2021, 11:33
Цитата Сообщение от goodrogrammer Посмотреть сообщение
это норм?
Это у тебя нужно спрашивать.
Мою включал?
Миниатюры
Удалить из каждой строки последовательность символов заключённую между двумя очередными появлениями заданного символа  
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 11:39  [ТС]
Folian, нужно чтобы в одно строке было два символа b, а в другой один символ b

Добавлено через 2 минуты
Folian, попробую

Добавлено через 3 минуты
Folian, препод сказал где у Вас написано pfpfpfpfpf должно выводить не p, а f
0
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 11:49  [ТС]
Folian, нужно только чтобы каждую строку выводило отдельно
Миниатюры
Удалить из каждой строки последовательность символов заключённую между двумя очередными появлениями заданного символа  
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1510
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
26.05.2021, 11:55
goodrogrammer, вы уже попробовали код, который был написан Folian ?
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 11:57  [ТС]
Volga_, да, но Ваш код правильнее, но нужно чтобы из одной строки с 3 словами выводилось ответ в три строки
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.05.2021, 11:58
Цитата Сообщение от goodrogrammer Посмотреть сообщение
препод сказал где у Вас написано pfpfpfpfpf должно выводить не p, а f
Строка заканчивается на p, пробел - символ, соотв-но всё что между p схлопывается. Оно не обрабатывает каждое "слово" отдельно, а всю строку целиком.
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 12:00  [ТС]
Folian, нужно ввести 3 слова в одной строке и после этого вывести их количество символов тройным ответом тоесть каждое слово выводится отдельно
0
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 12:01  [ТС]
В первой строке написано как нужно, а выводится должен ответ отдельно каждого слова
Миниатюры
Удалить из каждой строки последовательность символов заключённую между двумя очередными появлениями заданного символа  
0
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 12:03  [ТС]
Folian, Volga_, видите на рисунке у меня выводится ответ всё вместе, нужно каждое слово отдельно
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1510
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
26.05.2021, 12:07
Цитата Сообщение от goodrogrammer Посмотреть сообщение
нужно ввести 3 слова в одной строке и после этого вывести их количество символов тройным ответом тоесть каждое слово выводится отдельно
Можно ли так: ???
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
 
char* f(char* str, char symbol)
{
    int len = strlen(str);
    int* ind = new int[len];
    char* ret = new char[len + 1];
    if (ret == NULL)
        return NULL;
    int size = 0, i;
    for (i = 0; i < len; i++)
        if (str[i] == symbol)
        {
            ind[size] = i;
            size++;
        }
    if (size == 0 || size == 1)
    {
        strncpy(ret, str, len + 1);
    }
    else
    {
        int j = 0;
        for (i = 0; i < len; i++)
            if (i<ind[0] || i>ind[size - 1])
                ret[j++] = str[i];
            else
            {
                int k;
                for (k = 0; k < size; k++)
                    if (i == ind[k])
                        ret[j++] = symbol;
            }
        ret[j] = '\0';
    }
    delete[] ind;
    return ret;
}
 
int main()
{
    int i, n;
    cout << "Enter number of strings: n = ";
    cin >> n;
 
    char str[100][100];
    cout << "Enter text:" << endl;
    //cin.ignore();
    for (i = 0; i < n; i++)
        cin >> str[i];
 
    char symbol;
    cout << "Enter symbol: ";
    cin >> symbol;
    for (i = 0; i < n; i++)
    {
        char* ret = f(str[i], symbol);
        if (ret)
        {
            cout << ret << endl;
            delete[] ret;
        }
    }
    return 0;
}
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
26.05.2021, 12:09  [ТС]
Volga_, Вроде правильно
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
26.05.2021, 12:11
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <iostream>
#include <cstring>
#include <cstdio>
 
using namespace std;
 
char* f(char* str, char symbol)
{
    int len = strlen(str);
    int* ind = new int[len];
    char* ret = new char[len + 1];
    if (ret == NULL)
        return NULL;
    int size = 0, i;
    for (i = 0; i < len; i++)
        if (str[i] == symbol)
        {
            ind[size] = i;
            size++;
        }
    if (size == 0 || size == 1)
    {
        strncpy(ret, str, len + 1);
    }
    else
    {
        int j = 0;
        for (i = 0; i < len; i++)
            if (i<ind[0] || i>ind[size - 1])
                ret[j++] = str[i];
            else
            {
                int k;
                for (k = 0; k < size; k++)
                    if (i == ind[k])
                        ret[j++] = symbol;
            }
        ret[j] = '\0';
    }
    delete[] ind;
    return ret;
}
 
int main() 
{
    size_t n = 0;
    std::cout << "string num: ";
    std::cin >> n;
    std::cin.ignore();
    
    char **str = new char*[n];
    for(size_t i = 0; i < n; ++i)
    {
        str[i] = new char[256];
        
        std::cout << "\nString " << i + 1 << " :";
        gets(str[i]);
    }
    
 
    
 
    char symbol;
    cout<<"Enter symbol: ";
    cin>>symbol;
    std::cin.ignore();
        
        
    for(size_t i = 0; i < n; ++i)
    {
        char* ret = f(str[i], symbol);
        if (ret)
        {
            cout << ret;
            delete[] ret;
        }
        std::cout << "\n";
    }
 
 
    
    for(size_t i = 0; i < n; ++i)
        delete [] str[i];
    delete [] str;
    
    return 0;
}
Определись уже чего хочешь, то строки, то слова. Пиши без пробелов тогда уж.
Миниатюры
Удалить из каждой строки последовательность символов заключённую между двумя очередными появлениями заданного символа  
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.05.2021, 12:11

Из заданного текста удалить последовательность символов, расположенных между двумя парными двоеточиями
Пожалуйста, помогите решить задачу:Из заданного текста удалить последовательность символов, расположенных между двумя парными двоеточиями.

Из строки удалить последовательность символов, расположенных между двумя запятыми
Из строки удалить последовательность символов, расположенных между двумя запятыми (считается, что в строке ровно две запятые); Помогите...

Удалить последовательность символов, расположенных между двумя запятыми
Задача такова: Удалить последовательность символов, расположенных между двумя запятыми. До этого у меня была задача со скобками, но...

Из текста удалить последовательность символов, расположенных между двумя парными двоеточиями
Пожалуйста, помогите решить задачу:Из заданного текста удалить последовательность символов, расположенных между двумя парными двоеточиями.

Исключить последовательность символов, заключенную между круглыми скобками
Дано предложение. Исключить последовательность символов, заключенную между круглыми скобками. Результат отобразить на экране.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru