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

Удалить в строке

12.04.2011, 21:56. Показов 706. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста!

Задание:
1. Удалить часть символьной строки, заключенная в скобки (вместе со скобками).

Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2011, 21:56
Ответы с готовыми решениями:

Удалить символы в строке, стоящие на четных местах; удалить лишние пробелы и знаки табуляции в строке, заменив одним пробелом
Надо удалить символы в строке, стоящие на четных местах. И удалить лишние пробелы и знаки табуляции...

В заданной строке удалить последний символ пробел, который найдется в строке
Здравствуйте, можете помочь с методом удаления последнего пробела в строке?

В строке S удалить последние буквы, таким образом, чтобы длина каждого слова в строке не превышала 4
нужно срочно решить задачу: Строки В строке S удалить последние буквы, таким образом, чтобы...

Требуется в произвольной строке удалить последнее слово, т.е. все символы после последнего пробела в строке
Требуется в произвольной строке удалить последнее слово, т.е. все символы после последнего пробела...

7
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
12.04.2011, 22:01 2
Цитата Сообщение от OverClocker Посмотреть сообщение
1. Удалить часть символьной строки, заключенная в скобки (вместе со скобками).
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <algorithm>
 
int main(){
  std::string str;
  getline(std::cin, str);
  str.erase(str.find('('), str.find(')') - str.find('(') + 1);
  std::cout << str;
  return 0;
}
1
0 / 0 / 1
Регистрация: 16.03.2010
Сообщений: 17
12.04.2011, 23:03  [ТС] 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
#include <stdio.h>
#include <conio.h>
#include <string.h>
 
void main ()
{
clrscr ();
char str1[20];
char str2[20];
char *str="stroka (dfergtr) overclocker";
int i,j,o,z;
for (i=0;i<strlen(str);i++)
printf("%c",str[i]);
 
 
//////////////////открывающая////////////////////////
for (i=0;i<strlen(str);i++)
if (str[i]=='(')
o=i;
 
//////////////////закрывающая////////////////////////
for (i=0;i<strlen(str);i++)
if (str[i]==')')
z=i+1;
printf("\n");
 
/////////////////до скобки/////////////////////
for (i=0;i<o;i++)
printf("%c",str[i]);
 
/////////////////после скобки//////////////////
for (i=z;i<strlen(str);i++)
printf("%c",str[i]);
getch ();
}

помогите записать слово до скобки в отдельную строку и после скобки в отдельную строку и потом эти две строки объединить.
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
12.04.2011, 23:32 4
Цитата Сообщение от OverClocker Посмотреть сообщение
Маленько не так!
Что не так ?
0
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
12.04.2011, 23:48 5
Цитата Сообщение от OverClocker Посмотреть сообщение
Маленько не так!
Вам нужно без STL? Тогда так как-то:

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
#include <iostream>
#include <string.h>
 
using namespace std;
 
int main()
{
    char str[256];
 
    cout << ":";
    cin.getline( str, 255 );
    int str_lng = strlen(str);
 
    char result[255];
    int i = 0;
 
    // ------------- открывающая ---------------
    for( ; i < str_lng; i++ )
    {
        if( str[i] == '(' )
        {
            strncpy( result, str, i );
            i++;
            break;
        }
    }
 
 
    // ------------- закрывающая ---------------
    for( ; i < str_lng; i++ )
    {
        if( str[i] == ')' )
        {
            i++;
 
            if( str[i] ) // если не нуль-терминатор
              strcat( result, &str[i] );
 
            break;
        }
    }
 
    cout << result;
 
    return 0;
}
0
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
12.04.2011, 23:49 6
ещё способ
C
1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
 
int main(){
    char str[]="stroka (dfergtr)over(df(erg)tr)clocker", *a=str, *b=str, isOpen=0;
    for(; *b=*a; ++a){
        if(*a=='(') ++isOpen;
        if(!isOpen) ++b;
        if(*a==')') --isOpen;
    }
    puts(str);
    return 0;
}
2
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
13.04.2011, 00:12 7
igorrr37, красиво!

Есть, правда, один момент: если в строке есть лишняя закрывающая скобка, то она загоняет isOpen в минус, и получается, что теперь её нужно "закрыть" лишней открывающей - вогнать назад в плюс. Попробуйте поставить лишнюю скобку в середине строки:

C
1
char str[]="stroka (dfergtr)over(dfergtr)clo)ck(df(erg)tr)er";
Или в конце - конец обрезается:

C
1
char str[]="stroka (dfergtr)over(dfergtr)clock(df(erg)tr)e)r";
Лучше было бы, если бы она игнорировалась:

C
1
if(*a==')' && isOpen) --isOpen;
А принцип очень красивый, нравится!
1
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
13.04.2011, 01:07 8
уменьшим число проверок
C
1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
 
int main(){
    char str[]="st)r)oka (dfergtr)over(df(erg)tr)clocker", *a=str, *b=str, disbalance=0;
    for(; *b=*a; ++a){
        if(*a=='(') ++disbalance;
        else if(!disbalance) ++b;
        else if(*a==')') --disbalance;
    }
    puts(str);
    return 0;
}
2
13.04.2011, 01:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2011, 01:07
Помогаю со студенческими работами здесь

Нужно в одной строке удалить каждый символ, принадлежащий второй строке. При решении нельзя использовать готовые функции
Доброго времени суток! Нужно написать метод, который должен в первой заданной строке удалить каждый...

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

Подсчитать в строке число букв А и В, если букв А больше, чем В, то удалить в строке все символы В
помогите! Подсчитать в строке число букв А и В, если букв А больше, чем В, то удалить в строке все...

Подсчитать в строке число букв А и В, если букв А больше, чем В, то удалить в строке все символы В
Здравствуйте, помогите пожалуйста решить задачу с помощью процедур &quot;Подсчитать в строке число букв...


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

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

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