Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.58
Sirius315
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 37
#1

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

13.02.2012, 20:28. Просмотров 1589. Ответов 17
Метки нет (Все метки)

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

Задание;Исключить из строки слова, расположенные между скобками ( , ). Сами скобки должны быть исключены.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2012, 20:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исключить из строки слова, расположенные между скобками ( , ). Сами скобки должны быть исключены. (C++):

Удалить из заданной строки все группы символов, расположенные между скобками, включая сами скобки - C++
)))

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

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

1. Вывести введенную строку, исключив из нее те символы, которые находятся между скобками ( ) и сами скобки - C++
Помогите

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

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

17
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
13.02.2012, 20:38 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
 
int main()
{
    std::string str = "asd(zxc)qwe(dfg(ert)";
    for
    (
        auto first = str.find('('), last = str.find(')', first + 1);
        (first != std::string::npos) && (last != std::string::npos);
        first = str.find('(', first), last = str.find(')', first + 1)
    )
        str.erase(first, last - first + 1);
    std::cout << str << std::endl;
    return 0;
}
3
Sirius315
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 37
13.02.2012, 20:45  [ТС] #3
А если не трудно можно переписать текст в Borland C++

Добавлено через 3 минуты
Цитата Сообщение от soon Посмотреть сообщение
for
и что тут просто фор, что то упущенно?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
13.02.2012, 20:47 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <string>
#include <cstdlib>
 
int main()
{
    std::string str = "asd(zxc)qwe(dfg(ert)";
    for
    (
        std::size_t first = str.find('('), last = str.find(')', first + 1);
        (first != std::string::npos) && (last != std::string::npos);
        first = str.find('(', first), last = str.find(')', first + 1)
    )
        str.erase(first, last - first + 1);
    std::cout << str << std::endl;
    return 0;
}
Так пробуйте.

Добавлено через 39 секунд
Цитата Сообщение от Sirius315 Посмотреть сообщение
и что тут просто фор, что то упущенно?
Ничего, ниже 3 строки, можете их в одну упихать, но получится длинно.
1
Sirius315
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 37
13.02.2012, 20:53  [ТС] #5
Не получается, мы делаем вот как: Только задание я сейчас другое скину для примера:
Пример
Задание. Найти слова во введенной с клавиатуры строке, вывести их на экран и подсчитать их количество.
Пример программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<string.h>
void main()
{
 char s[100],d[100];
 int i=0,j=0,bw,ew,len;
 gets(s); len=strlen(s);
 while (i<len)
 {
   while((s[i]==' ')&&(i<len)) i++;
   bw=i;
   while((s[i]!=' ')&&(i<len)) i++;
   ew=i;
   strncpy(d,&s[bw],ew-bw+1);
   d[ew-bw+1]=0;
   if (bw<len)
    { j++;
      printf("%s\n",d);}
 }
printf("Vsego slov %d\n", j);
}
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
13.02.2012, 21:48 #6
В следующий раз указывайте язык сразу.
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
#include <stdio.h>
#include <string.h>
 
char* find(char* str, const char c)
{
    char* pos;
    for(pos = str; *pos != '\0'; ++pos)
        if(*pos == c)
            return pos;
    return pos;
}
 
void removeFromStr(char* first, char* last)
{
    for( ; *first = *last; ++first, ++last)
        ;
}
 
int main(int argc, char* argv[])
{
    char* first, *last;
    int i;
    for(i = 1; i < argc; ++i)
    {
        for
        (
            first = find(argv[i], '('), last = find(first, ')');
            (*first != '\0') && (*last != '\0');
            first = find(argv[i], '('), last = find(first, ')')
        ) 
            removeFromStr(first, last + 1);
        printf("%s\n", argv[i]);
    }
    return 0;
}
1
Sirius315
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 37
13.02.2012, 22:34  [ТС] #7
Спасибо большое)))
0
Sirius315
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 37
20.02.2012, 20:41  [ТС] #8
почему то не выводит на экран. Чего то не хватает??? Проверьте пожалуйта,она не запускается, не ыводит экран для ввода значения.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.02.2012, 20:52 #9
Все хватает. Просто из консоли нужно запускать
создаю исполняемый файл запускаю окно появляется на доли секунды и изчезает
0
Sirius315
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 37
20.02.2012, 21:11  [ТС] #10
Что то не помагает, сами попробуйте, может у вас что выйдет из этого.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.02.2012, 21:20 #11
Bash
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
soon@desktop:~/Src/C/main$ cat main.c
#include <stdio.h>
#include <string.h>
 
char* find(char* str, const char c)
{
    char* pos;
    for(pos = str; *pos != '\0'; ++pos)
        if(*pos == c)
            return pos;
    return pos;
}
 
void removeFromStr(char* first, char* last)
{
    for( ; *first = *last; ++first, ++last)
        ;
}
 
int main(int argc, char* argv[])
{
    char* first, *last;
    int i;
    for(i = 1; i < argc; ++i)
    {
        for
        (
            first = find(argv[i], '('), last = find(first, ')');
            (*first != '\0') && (*last != '\0');
            first = find(argv[i], '('), last = find(first, ')')
        ) 
            removeFromStr(first, last + 1);
        printf("%s\n", argv[i]);
    }
    return 0;
}
soon@desktop:~/Src/C/main$ gcc main.c -o main && ./main \(awd\)zxc\(qwe\(asd\)
zxc
soon@desktop:~/Src/C/main$
0
Sirius315
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 37
20.02.2012, 21:25  [ТС] #12
не чего не поменялось(((((((
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.02.2012, 21:28 #13
Sirius315, код из поста #6 предполагает запуск из консоли + передачу аргументов. В теле функции main реализован алгорим, нужные функции написаны. Если не хотите запускать из консоли - создаете массив char, вводите строку и скармливаете алгоритму.
0
Sirius315
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 37
20.02.2012, 21:31  [ТС] #14
Цитата Сообщение от soon Посмотреть сообщение
код из поста #6 предполагает запуск из консоли + передачу аргументов
Как запускать то? Я не когда так не делал? В какую группу в программе заходить?
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
20.02.2012, 21:38 #15
Sirius315, е-мое.
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 <stdio.h>
#include <string.h>
 
char* find(char* str, const char c)
{
    char* pos;
    for(pos = str; *pos != '\0'; ++pos)
        if(*pos == c)
            return pos;
    return pos;
}
 
void removeFromStr(char* first, char* last)
{
    for( ; *first = *last; ++first, ++last)
        ;
}
 
int main()
{
    char* first, *last;
    int i;
    char str[] = "(asd)zxc(qwe(asd)";
 
    for
    (
        first = find(str, '('), last = find(first, ')');
        (*first != '\0') && (*last != '\0');
        first = find(str, '('), last = find(first, ')')
    ) 
        removeFromStr(first, last + 1);
 
    printf("%s\n", str);
 
    return 0;
}
Ничего вводить не надо, запускаете и любуетесь.
1
20.02.2012, 21:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2012, 21:38
Привет! Вот еще темы с ответами:

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

Удалить группы символов, расположенные между фигурными скобками - C++
А можно это же самое, только на си++? Так же ответить на некоторые вопросы типа: 1. без этих подозрительных звезд * нельзя обойтись?...

Удалить часть символьной строки, заключенной в скобки (вместе со скобками). - C++
Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.