0 / 0 / 1
Регистрация: 06.08.2015
Сообщений: 85
1

Удалить из заданного те символы, которые находятся в скобках ()

09.10.2015, 14:00. Показов 672. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан текст. Удалить из текста те символы, которые находятся в скобках (). Сами скобки не удалять. Если хотя бы одной скобки нет, сообщить об этом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2015, 14:00
Ответы с готовыми решениями:

Удалить из строки символы, которые находятся в скобках
Строка задана с клавиатуры, удалить из строки символы, которые находятся в скобках(скобки тоже...

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

Ввести любой текст,изъять символы,которые находятся в скобках […],скобки тоже удалить
помогите пожалуйста) Ввести любой текст,изъять символы,которые находятся в скобках ,скобки тоже...

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

4
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
09.10.2015, 14:51 2
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
#include <stdio.h>
 
int remove_area(char* s, char fc, char lc){
    int   n, k;
    char* p, *i;
 
    for(k = n = 0, p = s; *p; ++p){
        if(*p == fc){
            ++n;
            k = 1;
        } else if(*p == lc){
            --n;
            k = 1;
        }
    }
    if(n != 0 || !k)
        return 0;
 
    while(*s && (*s != fc))
        ++s;
 
    for(p = s; *s; *s = *p){
        if(*p != fc)
            ++s;
        else {
            *(++s) = *p;
            i      = p + 1;
            while(*i && (*i != lc))
                ++i;
            p = i;
            continue;
        }
        ++p;
    }
    return 1;
}
 
int main(void){
    char s[] = "(ops) sector (area) (2012)() end (X)";
 
    puts(s);
    if(! remove_area(s, '(', ')') )
        puts("error");
    else
        puts(s);
    return 0;
}
Пример работы кода
0
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
09.10.2015, 20:32 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
#include <stdbool.h>
#include <stdio.h>
 
void copy_outside_brackets(char* src, char* dst) {
    bool inside_brackets = false;
    char ch;
    while (ch = *src++) {
        if (ch == ')') {
            inside_brackets = false;
        }
        if (!inside_brackets) {
            *dst++ = ch;
        }
        if (ch == '(') {
            inside_brackets = true;
        }
    }
    *dst = '\0';
}
 
int main(void) {
    char src[] = "(ops) sector (area) (2012)() end (X)";
    char dst[sizeof(src) / sizeof(char)];
    copy_outside_brackets(src, dst);
    puts(src);
    puts(dst);
    return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12454 / 7479 / 1752
Регистрация: 25.07.2009
Сообщений: 13,755
10.10.2015, 12:59 4
На вложенных скобках обломается
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
#include <stdio.h>
#include <string.h>
 
char * remove_inside_brackets(char * s) {
    char * pOpen, * pClose;
    
    for ( pOpen = strchr(s, '('); pOpen; pOpen = strchr(pClose + 1, '(') ) {
        if ( pClose = strchr(pOpen, ')') )
            memmove(pOpen + 1, pClose, strlen(pClose) + 1);
        else
            break;
    }
    
    return s;
}
 
int main(void) {
    char buf[BUFSIZ];
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
        printf("Result: %s", remove_inside_brackets(buf));
    
    return 0;
}
Код
andrew@debppc:~/workspace/c/strings$ gcc remove_inside_brackets.c 
andrew@debppc:~/workspace/c/strings$ ./a.out 
String: any (many) money(more).
Result: any () money().
String: 
andrew@debppc:~/workspace/c/strings$
0
349 / 299 / 166
Регистрация: 15.03.2012
Сообщений: 653
Записей в блоге: 1
10.10.2015, 23:43 5
Вот универсальное решение, даже со вложенными скобками.
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
#include <stdio.h>
 
int clean(char *str) {
    int par = 0;
        for (;*str;str++) {
            switch (*str) {
                case '(' :
                par++;
                break;
            case ')' :
                par--;
                if (par<0) return 0;
                break;
            default :
                if (par){
                    char *p = str;
                    for (; *p; p++)
                        *p = *(p+1);
                    str--;
        }     } }
        if (!par) return 1;
        else return 0;
}
 
 
int main(int *ARGC, char *ARGV[]) {
    if (clean(ARGV[1]))
        printf ("%s\n", ARGV[1]);
    else
        printf ("Error\n");
 
    return 0;
}
Кликните здесь для просмотра всего текста
Удалить из заданного те символы, которые находятся в скобках ()
0
10.10.2015, 23:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2015, 23:43
Помогаю со студенческими работами здесь

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

В строке удалить символы в скобках вместе со скобками
Мне нужна в строке символов удалить те символы, которые будут в скобка и сами скобки тоже удалить...

Работа со строками. Удалить из строки символы в скобках inline assembler.
Удалить из строки символы в скобках inline assembler. Подскажите в какую сторону копать...

Удалить в строке символов все символы в скобках вместе с самими скобками
Текст задачи такой: Даны натуральное число n, символы s_1, … , s_n. Исключить из...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru