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

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

Войти
Регистрация
Восстановить пароль
 
CHELitw
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 30
#1

Если в строке левая и правая скобки идут рядом, удалить их из строки - C++

19.09.2012, 13:45. Просмотров 573. Ответов 7
Метки нет (Все метки)

Сгенерировать строку, длиной в 256 символов, которая состоит из случайной последовательности скобок разных видов: круглых, квадратных и фигурных. Проанализировать строку, и если в ней левая и права скобки одного вида идут рядом,удалить их из строки. Повторяйте процедуру, пока это возможно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2012, 13:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Если в строке левая и правая скобки идут рядом, удалить их из строки (C++):

Правая и левая производная - C++
Помогите сделать задачу. Необходимо посчитать правую и левую производную для какой-либо функции на отрезке h.

Удалить из строки все скобки - C++
1) Удалить из строки все скобки.......

Удалить часть символьной строки, заключенной в скобки - C++
Помогите пожалуйста решить задачу Вот условие:Удалить часть символьной строки, заключенной в скобки (вместе со скобками).

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

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

Ошибка в задаче: Найти мин. k, которое будет удовлетворять условию: fabs(правая часть - левая часть) < 10^(-15) - C++
Задача: k изменяется от 0 до бесконечности ((4k+1)! / ^2) * x^2k = =1/2* X принадлежит интервалу (-1/4 ; 1/4) Найти мин....

7
co6ak
Кошковед
409 / 502 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
19.09.2012, 15:07 #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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
void checkAndDelete( const char*, int );
 
int main() {
        srand( time ( NULL ) );
    string fill = {'[', ']', '(', ')', '}', '{', '<', '>'};
    
    const char* buffer = new const char* [256];
    
    for ( int i = 0; i < 256; i ++ )
        buffer[i] = fill[std::rand() % fill.length()];
    
    std::cout << buffer << std::endl;
    
    checkAndDelete(buffer, 0);
    
    return 0;
}
 
 
void checkAndDelete ( const char* buffer, int index )
{
    if ( index < 256 ) {
        if ( abs(int(buffer[index]) - int(buffer[index+1])) == 1  ) {
            buffer[index] = '';
            buffer[index+1] = '';
                        std::cout << buffer << std::endl;
            }
        checkAndDelete (buffer, index++);  
    }
}
компилятора плюсового нет под рукой. может, кто из местных гуру подправит, если что не так

Добавлено через 1 минуту
можно совсем извратиться, и сдвигать по индексу удаленные эл-ты. тогда итераций будет больше
0
CHELitw
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 30
19.09.2012, 15:14  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
#include <stdlib.h>
using namespace std;
int main ()
{
    int it=0;
    char duzki[]="()[]{}";
    for (int it=0;it<256;it++)
    {
        int i=0;
        i=5*rand()/RAND_MAX;
        cout<<duzki[i];
        i++;
    }
system("pause");
return 1;
}
Только выводит рандомные символы.
как их проверить и исключить?
0
co6ak
Кошковед
409 / 502 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
19.09.2012, 15:15 #4
а вот из моего куска возьми функцию и один раз вызови ее.
0
CHELitw
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 30
20.09.2012, 18:35  [ТС] #5
Мне нужно в С++ сделать,а с кодом в С я не дружу.
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
20.09.2012, 20:37 #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
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
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
/////////////////////////////////////////////////////////////////////////////////////////
const T_str     ROUND_BRACKETS    =   "()";
const T_str     SQUARE_BRACKETS   =   "[]";
const T_str     FRENCH_BRACKETS   =   "{}";
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_brackets_generator
{
    const T_str&    brackets_str_;
    //-----------------------------------------------------------------------------------
    T_brackets_generator(const T_str&  brackets_str)
        :
        brackets_str_( brackets_str )
    {}
    //-----------------------------------------------------------------------------------
    char    operator() ()
    {
        return  brackets_str_
                    [
                        rand() % brackets_str_.size()
                    ];
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
void  remove_adjacend_brackets(T_str&  s)
{    
    T_str::size_type    pos     =   0;
    
    while   (
                    !s.empty()
                &&  (
                                ( pos     =   s.find( ROUND_BRACKETS    ) )     !=  T_str::npos
                        ||      ( pos     =   s.find( SQUARE_BRACKETS   ) )     !=  T_str::npos
                        ||      ( pos     =   s.find( FRENCH_BRACKETS   ) )     !=  T_str::npos
                    )
            )
    {
        s.erase( pos, 2);
    }
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    srand(unsigned(time(0)));
    const int       STRING_SIZE     =   256;
 
    T_str   s   ( 
                    STRING_SIZE,
                    '\0'
                );
 
    std::generate
        (
            s.begin                 (),
            s.end                   (),
            T_brackets_generator    (
                                            ROUND_BRACKETS
                                        +   SQUARE_BRACKETS
                                        +   FRENCH_BRACKETS
                                    )
        );
 
    std::cout   <<  s
                <<  std::endl;
 
    remove_adjacend_brackets(s);
 
    std::cout   <<  std::endl
                <<  s
                <<  std::endl;
}
0
CHELitw
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 30
02.10.2012, 01:01  [ТС] #7
Не работает ни один из кодов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
#include <stdlib.h>
using namespace std;
int main ()
{
    int it=0;
    char duzki[]="()[]{}";
    for (int it=0;it<256;it++)
    {
        int i=0;
        i=5*rand()/RAND_MAX;
        cout<<duzki[i];
        i++;
    }
system("pause");
return 1;
}
может ли кто-то до этого кода добавить функцию проверки?
0
CHELitw
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 30
31.10.2012, 16:18  [ТС] #8
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
// price.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <iostream.h>
 
void odinici(int kop, char * mystr);
void desyatku(int kop, char * mystr);
 
void main()
{
    int price=0;
    while (price<=0 || price>1000)
    {
 
        cout<<"vvedyt cinu w kopiykah: ";
        cin>>price;
    }
    int hryvna=price/100;
    int kopiyku=price%100;
    int I0kop=kopiyku/10;
    int Ikop=kopiyku%10;
    if (kopiyku<20){Ikop=kopiyku%20;}
    cout<<"hryvna: "<<hryvna<<endl;
    cout<<"10 kop: "<<I0kop<<endl;
    cout<<"1 kop: "<<Ikop<<endl;
    char propisom[255];
    desyatku(I0kop,propisom);
    cout<<propisom<<endl;
    odinici(Ikop, propisom);
    cout<<propisom<<endl;
    system("pause");
}
 
 
void odinici(int kop, char * mystr)
{
    switch (kop)
    {
    case 1:sprintf(mystr, "odna"); break;
    case 2:sprintf(mystr, "dvi"); break;
    case 3:sprintf(mystr, "tri"); break;
    case 4:sprintf(mystr, "choturu"); break;
    case 5:sprintf(mystr, "pyat"); break;
    case 6:sprintf(mystr, "shist"); break;
    case 7:sprintf(mystr, "sim"); break;
    case 8:sprintf(mystr, "visim"); break;
    case 9:sprintf(mystr, "devyat"); break;
    case 10:sprintf(mystr, "desyat"); break;
    case 11:sprintf(mystr, "odunadtsat"); break;
    case 12:sprintf(mystr, "dvanadsat"); break;
    case 13:sprintf(mystr, "trunadsat"); break;
    case 14:sprintf(mystr, "choturnadsat"); break;
    case 15:sprintf(mystr, "pyatnadsat"); break;
    case 16:sprintf(mystr, "shistnadsat"); break;
    case 17:sprintf(mystr, "simnadsat"); break;
    case 18:sprintf(mystr, "visimnadsat"); break;
    case 19:sprintf(mystr, "devyatnadsat"); break;
    default:sprintf(mystr, "");break;
 
    }
}
 
void desyatku(int I0kop, char * mystr)
{
    switch (I0kop)
    {
    case 2:sprintf(mystr, "dvadsyat"); break;
    case 3:sprintf(mystr, "tridsyat"); break;
    case 4:sprintf(mystr, "sorok"); break;
    case 5:sprintf(mystr, "pyatdesyat"); break;
    case 6:sprintf(mystr, "shistdesyat"); break;
    case 7:sprintf(mystr, "simedesyat"); break;
    case 8:sprintf(mystr, "visimdestat"); break;
    case 9:sprintf(mystr, "devyanosto"); break;
    default:sprintf(mystr, "");break;
 
    }
}// price.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <iostream.h>
 
void odinici(int kop, char * mystr);
void desyatku(int kop, char * mystr);
 
void main()
{
    int price=0;
    while (price<=0 || price>1000)
    {
 
        cout<<"vvedyt cinu w kopiykah: ";
        cin>>price;
    }
    int hryvna=price/100;
    int kopiyku=price%100;
    int I0kop=kopiyku/10;
    int Ikop=kopiyku%10;
    if (kopiyku<20){Ikop=kopiyku%20;}
    cout<<"hryvna: "<<hryvna<<endl;
    cout<<"10 kop: "<<I0kop<<endl;
    cout<<"1 kop: "<<Ikop<<endl;
    char propisom[255];
    desyatku(I0kop,propisom);
    cout<<propisom<<endl;
    odinici(Ikop, propisom);
    cout<<propisom<<endl;
    system("pause");
}
 
 
void odinici(int kop, char * mystr)
{
    switch (kop)
    {
    case 1:sprintf(mystr, "odna"); break;
    case 2:sprintf(mystr, "dvi"); break;
    case 3:sprintf(mystr, "tri"); break;
    case 4:sprintf(mystr, "choturu"); break;
    case 5:sprintf(mystr, "pyat"); break;
    case 6:sprintf(mystr, "shist"); break;
    case 7:sprintf(mystr, "sim"); break;
    case 8:sprintf(mystr, "visim"); break;
    case 9:sprintf(mystr, "devyat"); break;
    case 10:sprintf(mystr, "desyat"); break;
    case 11:sprintf(mystr, "odunadtsat"); break;
    case 12:sprintf(mystr, "dvanadsat"); break;
    case 13:sprintf(mystr, "trunadsat"); break;
    case 14:sprintf(mystr, "choturnadsat"); break;
    case 15:sprintf(mystr, "pyatnadsat"); break;
    case 16:sprintf(mystr, "shistnadsat"); break;
    case 17:sprintf(mystr, "simnadsat"); break;
    case 18:sprintf(mystr, "visimnadsat"); break;
    case 19:sprintf(mystr, "devyatnadsat"); break;
    default:sprintf(mystr, "");break;
 
    }
}
 
void desyatku(int I0kop, char * mystr)
{
    switch (I0kop)
    {
    case 2:sprintf(mystr, "dvadsyat"); break;
    case 3:sprintf(mystr, "tridsyat"); break;
    case 4:sprintf(mystr, "sorok"); break;
    case 5:sprintf(mystr, "pyatdesyat"); break;
    case 6:sprintf(mystr, "shistdesyat"); break;
    case 7:sprintf(mystr, "simedesyat"); break;
    case 8:sprintf(mystr, "visimdestat"); break;
    case 9:sprintf(mystr, "devyanosto"); break;
    default:sprintf(mystr, "");break;
 
    }
}
Добавлено через 22 минуты
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// price.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdlib.h>
#include <iostream.h>
 
 
void GRN(int kop, char * mystr);
void KOP(int kop, char * mystr);
void odinici(int kop, char * mystr);
void odinici(int kop, char * mystr);
void desyatku(int kop, char * mystr);
 
void main()
{
    int price=0;
    while (price<=0 || price>1000)
    {
 
        cout<<"vvedyt cinu w kopiykah: ";
        cin>>price;
    }
    int hryvna=price/100;
    int kopiyku=price%100;
    int I0kop=kopiyku/10;
    int Ikop=kopiyku%10;
    if (kopiyku<20){Ikop=kopiyku%20;}
    cout<<"hryvna: "<<hryvna<<endl;
    cout<<"10 kop: "<<I0kop<<endl;
    cout<<"1 kop: "<<Ikop<<endl;
    char propisom[255];
    odinici(hryvna,propisom);
    cout<<propisom<<" ";
    GRN(hryvna,propisom);
    cout<<propisom<<" ";
    desyatku(I0kop,propisom);
    cout<<propisom<<" ";
    odinici(Ikop, propisom);
    cout<<propisom<<" ";
    KOP(Ikop, propisom);
    cout<<propisom<<endl;
    system ("pause");
}
 
 
void odinici(int kop, char * mystr)
{
    switch (kop)
    {
    case 1:sprintf(mystr, "odna"); break;
    case 2:sprintf(mystr, "dvi"); break;
    case 3:sprintf(mystr, "tri"); break;
    case 4:sprintf(mystr, "choturu"); break;
    case 5:sprintf(mystr, "pyat"); break;
    case 6:sprintf(mystr, "shist"); break;
    case 7:sprintf(mystr, "sim"); break;
    case 8:sprintf(mystr, "visim"); break;
    case 9:sprintf(mystr, "devyat"); break;
    case 10:sprintf(mystr, "desyat"); break;
    case 11:sprintf(mystr, "odunadtsat"); break;
    case 12:sprintf(mystr, "dvanadsat"); break;
    case 13:sprintf(mystr, "trunadsat"); break;
    case 14:sprintf(mystr, "choturnadsat"); break;
    case 15:sprintf(mystr, "pyatnadsat"); break;
    case 16:sprintf(mystr, "shistnadsat"); break;
    case 17:sprintf(mystr, "simnadsat"); break;
    case 18:sprintf(mystr, "visimnadsat"); break;
    case 19:sprintf(mystr, "devyatnadsat"); break;
    default:sprintf(mystr, "");break;
 
    }
}
 
void desyatku(int I0kop, char * mystr)
{
    switch (I0kop)
    {
    case 2:sprintf(mystr, "dvadsyat"); break;
    case 3:sprintf(mystr, "tridsyat"); break;
    case 4:sprintf(mystr, "sorok"); break;
    case 5:sprintf(mystr, "pyatdesyat"); break;
    case 6:sprintf(mystr, "shistdesyat"); break;
    case 7:sprintf(mystr, "simedesyat"); break;
    case 8:sprintf(mystr, "visimdestat"); break;
    case 9:sprintf(mystr, "devyanosto"); break;
    default:sprintf(mystr, "");break;
 
    }
}
 
 
void GRN(int kop, char * mystr)
{
    switch (kop)
    {
    case 1:sprintf(mystr, "grivnya"); break;
    case 2:
    case 3:
    case 4:sprintf(mystr, "grivni"); break;
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:sprintf(mystr, "griven"); break;
    default:sprintf(mystr, "");break;
    }
}
 
void KOP(int kop, char * mystr)
{
    switch (kop)
    {
    case 0:sprintf(mystr, "kopiyok"); break;
    case 1:sprintf(mystr, "kopiyka"); break;
    case 2:
    case 3:
    case 4:sprintf(mystr, "kopiyku"); break;
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:sprintf(mystr, "kopiyok"); break;
    default:sprintf(mystr, "");break;
    }
}
0
31.10.2012, 16:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2012, 16:18
Привет! Вот еще темы с ответами:

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

Удалить части строки, заключенные в правильно расставленные фигурные скобки - C++
Помогите пожалуйста с задачкой. Задание:Задана строка. Нужно удалить ее части, заключенные в правильно расставленные фигурные скобки....

Строки (В строке переставить местами рядом стоящие слова) - C++
Задача: В строке переставить местами рядом стоящие слова. Помогите сделать через 3 строки, именно через 3. Т.е. берется 1 слово и...

Дана строка, содержащая латинские буквы и скобки. Если скобки расставлены правильно - вывести 0. Иначе - номер позиции, где есть ошибочная скобка - C++
Дана строка, содержащая латинские буквы и круглые скобки. Если скобки расставлены правильно (то есть каждой открывающей соответству-ет одна...


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

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

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