Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
 Аватар для ksardas19
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 15

Из заданной строки исключить символы равосположенные между скобками [ ]

14.02.2014, 23:45. Показов 4236. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка символов. Исключить из этой строки группы символов, расположенные между скобками [ ]. Сами скобки тоже должны быть исключены. Предполагается, что внутри каждой пары скобок нет других скобок.

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


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
#include <cstdlib>
#include <iostream>
#include <string>
 
int main(int argc,char *argv[])
{
    system("chcp 1251");
 
char bes[200];
 
int i;
printf ("ââåñòè ñòðîêó ñèìâîëîâ:");
gets(bes);
char *buf =new char [strlen(bes)+1];
int k,s1,s2;
k=strlen(bes);
for (int i=0;i<k;i++) 
 
if (bes[i]=='[') {
 s1=i; break;}
 
 
 for (int i=0;i<k;i++) 
 
if (bes[i]==']') {
  s2=i; break;}
  
  for (i=0;i<s1;i++);
  { buf[i]=bes[i];}
  
   for (i=s2;i<k+1;i++);
  { buf[i]=bes[i];}
  
puts(buf);
system("PAUSE");
    return EXIT_SUCCESS;
 }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2014, 23:45
Ответы с готовыми решениями:

Исключить все символы между круглыми скобками, включая сами скобки
исключить все символы между круглыми скобками, включая сами скобки. Рассмотреть случай вложенных скобок.

Исключить из строки слова, расположенные между скобками ( , )
Люди, очень нужна помощь! Напишите, пожалуйста, на С++ программу, которая из введенной с клавиатуры строки исключает все слова, заключенные...

Исключить из строки слова, расположенные между скобками
Дана последовательность символов S1, …, SN. Группы символов, разделенные пробелом (одним или несколькими) и не содержащие пробелов внутри...

7
Знаток
156 / 156 / 185
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
14.02.2014, 23:57
Попробуй так:
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
#include <cstdlib>
#include <iostream>
#include <string>
 
int main(int argc,char *argv[])
{
    system("chcp 1251");
 
char bes[200];
 
int i;
printf ("ввести строку символов:");
gets(bes);
int k,s1,s2;
k=strlen(bes);
for (int i=0;i<k;i++) 
 
if (bes[i]=='[') {
 s1=i; break;}
 
 
 for (int i=0;i<k;i++) 
 
if (bes[i]==']') {
  s2=i; break;}
char *buf =new char [strlen(bes)+1-s2+s1];
  
  for (i=0;i<s1;i++);
  { buf[i]=bes[i];}
  
   for (i=s2;i<k+1;i++);
  { buf[i]=bes[i];}
  
puts(buf);
system("PAUSE");
    return EXIT_SUCCESS;
 }
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
15.02.2014, 00:00
ksardas19, недавно делал, правда использовал string и функцию replace библиотеки string.
Надеюсь в алгоритме разберётесь.
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
#include <iostream>
#include <string>
 
int main()
{
    std::string str;
    std::cout << "Enter string: ";
    getline(std::cin, str);
    int size, temp, index = 0, counter = 0;
    size = str.size() + 1;
    temp = size;
    
    while(temp != 0)
    {
        if((int)str[index] == 91)
        {
            for(int i = index; i < size; i++)
            {
                counter = i - index;
                if((int)str[i] == 93)
                {
                    str.replace(index, counter + 1, "");
                    size -= counter - 1;
                    break;
                }
            }
        }
        index++;
        temp--;
    }
    
    std::cout << "\n" << str << "\n\n";
    
    system("pause");
    return 0;
}
1
 Аватар для ksardas19
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 15
15.02.2014, 00:34  [ТС]
Amandosov, К сожалению,не помогло. По-прежнему выводит левые символы,которых при вводе и в помине нет.

Добавлено через 3 минуты
GuGo1991, Спасибо,но хотелось бы разобраться что не так с моим кодом
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
15.02.2014, 02:30
ksardas19
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
#include <cstdlib>
#include <iostream>
#include <string>
 
int main(int argc,char *argv[])
{
    system("chcp 1251");
 
    char bes[200];
 
    printf("ââåñòè ñòðîêó ñèìâîëîâ: ");
    gets(bes);
    char *buf = new char[strlen(bes) + 1];
    int k, s1, s2;
    k = strlen(bes);
    
    for(int i = 0; i < k; i++)
    {
        if (bes[i] == '[')
        {
            s1 = i;
            break;
        }
    }  
     
    for (int i = 0; i < k; i++) 
    {
        if(bes[i] == ']')
        {
            s2 = i;
            break;
        }
    }
    
    for(int i = 0; i < s1; i++)
        buf[i] = bes[i];
      
    for(int i = s2; i < k; i++)
        buf[i] = bes[i];
      
    puts(buf);
    system("PAUSE");
    return EXIT_SUCCESS;
}
Ваш код, слегка вид изменил. Работает, вам осталось всё в цикл вставить чтобы проверить
если вдруг ещё встретится скобка, а то раз встретится '[' выведит то что было до неё.
1
 Аватар для ksardas19
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 15
15.02.2014, 16:25  [ТС]
GuGo1991, Спасибо,но я что-то уже целый день сообразить не могу,ведь по логике он уже должен вывести обрезанную строку,почему он игнорирует второе условие? Можно поподробнее про новый цикл?
0
272 / 266 / 146
Регистрация: 02.08.2012
Сообщений: 609
15.02.2014, 17:36
Лучший ответ Сообщение было отмечено ksardas19 как решение

Решение

ksardas19
Кликните здесь для просмотра всего текста
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
#include <cstdlib>
#include <iostream>
#include <string>
 
int main(int argc,char *argv[])
{
    system("chcp 1251");
 
    char bes[200];
 
    printf("ââåñòè ñòðîêó ñèìâîëîâ: ");
    gets(bes);
    char *buf = new char[strlen(bes) + 1];
    int k, s1, s2, count = 0;
    k = strlen(bes);
    
    for(int i = 0; i < k; i++)
    {
        if (bes[i] == '[')
        {
            s1 = i;
            break;
        }
    }  
     
    for (int i = 0; i < k; i++) 
    {
        if(bes[i] == ']')
        {
            s2 = i;
            break;
        }
    }
    
    for(int i = 0; i < s1; i++)
    {
        buf[i] = bes[i];
        count++;
    }
    
    for(int i = count; i < k; i++)
    {
        s2++;
        buf[i] = bes[s2];
    }
      
    puts(buf);
    system("PAUSE");
    return EXIT_SUCCESS;
}

Вы в последнем цикле значение элемента массива по индексу старого присваивали по тому же индексу новому.
А ещё цикл понадобится чтобы проверить и остальные элементы массива на наличие скобки, если есть такая необходимость.
1
 Аватар для ksardas19
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 15
15.02.2014, 17:52  [ТС]
GuGo1991, большое спасибо за внимание и время!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2014, 17:52
Помогаю со студенческими работами здесь

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

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

Исключить из заданной строки группы символов между скобками [ ].
Исключить из заданной строки группы символов между скобками '' . Сами скобки тоже должны быть исключены. Предпологается, что внутри каждой...

Исключить из заданной строки группы символов между скобками '[', ']'
Исключить из заданной строки группы символов между скобками ''. Сами скобки тоже должны быть исключены. Предполагается, что внутри каждой...

Удалить из заданной строки все символы , находящиеся между скобками, включая сами скобки
2. дана строка символов, содержащая не более одной пары скобок. Удалить из заданной строки все символы , находящиеся между скобками,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru