Форум программистов, компьютерный форум CyberForum.ru

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

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

Проверить правильность расстановки скобок - C++

16.03.2014, 22:52. Просмотров 1085. Ответов 2
Метки нет (Все метки)

Помогите написать программу на c++.
Дана строка, содержащая латинские буквы и скобки трех видов: «()», «[]», «{}». Если скобки расставлены правильно (т. е. каждой открывающей соответствует закрывающая скобка того же вида), то вывести число 0. В противном случае вывести или номер позиции, в которой расположена первая ошибочная скобка, или, если закрывающих скобок не хватает, число −1.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 22:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить правильность расстановки скобок (C++):

Работа со стеком (проверить правильность расстановки скобок) - C++
Дано математическое выражение, к примеру {x+(g-*c)-(q+w)}. Необходимо проверить,правильно ли расставлены скобки. Проверять следует...

В символьной строке проверить правильность расстановки скобок - C++
Есть строка, нужно проверить её на правильное раставление скобок. Как это организовать правильно?

Проверить правильность расстановки в тексте круглых скобок - C++
Задача: Проверить правильность расстановки в тексте круглых скобок. #include <iostream> #include <cstring> using namespace...

Проверить правильность расстановки и вложенности скобок в тексте (абстрактный стек) - C++
реализовать с помощью связного списка...

Проверить правильность расстановки в тексте круглых скобок (конечный автомат) - C++
Только начала изучать С++.Необходимо проверить правильность расстановки в тексте круглых скобок. Текст вводится с клавиатуры и...

Проверить в тексте файла правильность расстановки открывающих и закрывающих скобок - C++
Помогите, пожалуйста написать программу C++ Дан текстовый файл INPUT.TXT. Проверить в тексте файла правильности расстановки открывающих и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fishec
119 / 119 / 30
Регистрация: 07.09.2013
Сообщений: 338
16.03.2014, 22:59 #2
Используй поиск, такие темы уже были. Реализация через стек
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
12.04.2014, 03:35 #3
Цитата Сообщение от bldY Посмотреть сообщение
закрывающая скобка того же вида), то вывести число 0. В противном случае вывести или номер позиции, в которой расположена первая ошибочная скобка, или, если закрывающих скобок не хватает, число −1.
bldY, представьте что первая ошибочная скобка стоит вначале:
")123+345"
Функция вернёт 0?
Постановка задачи мне не нравится.
Вот такой вариант показывает неоднозначность:
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
#include <iostream>
#include <string>
using namespace std;
bool verify_parenses(string source_str, char parence_left, char parence_right, int& err_pos){
int cnt=0;
err_pos=0;
int sz = (int)source_str.size();
for(int i = 0; i < sz; ++i){
if( source_str[i] == parence_left )cnt++;
if( source_str[i] == parence_right )cnt--;
if(cnt < 0){
cout<<"\nBad parenses verification by placement \")(\"! \nin bool verify_parenses() \nat source_str:\n"<<source_str<<endl<<endl;
err_pos=i;
return false;
}
    }
if(!cnt)return true; 
cout<<"\nBad parenses verification balans! \nin bool verify_parenses() \nat source_str:\n"<<source_str<<endl<<endl;
err_pos=-1;
return false;
}
 
int main(){
int err_pos;
string str1="((1+2)*3+1)/3"; 
if (verify_parenses(str1, '(', ')', err_pos))cout<<"allright";
cout<<"\nerr_pos= "<<err_pos<<endl;
 
string str2=")(1+2)*3+1/3"; 
if (verify_parenses(str2, '(', ')', err_pos))cout<<"allright";
cout<<"\nerr_pos= "<<err_pos<<endl;
 
string str3="((1+2)*3+1/3"; 
if (verify_parenses(str3, '(', ')', err_pos))cout<<"allright";
cout<<"\nerr_pos= "<<err_pos<<endl;
 
system("pause"); 
    return 0; 
}
Хотя может я и не понял условия.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.04.2014, 03:35
Привет! Вот еще темы с ответами:

Проверить правильность расстановки в тексте круглых скобок. Текст заканчивается точкой - C++
Работает,но неправильно. Сделала конечным автоматом. Помогите, пожалуйста! #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cmath&gt; ...

Дана строка символов проверить правильность расстановки круглых и квадратных скобок в выражениях - C++
дана строка символов проверить правильность расстановки круглых и квадратных скобок в выражениях

Правильность расстановки скобок - C++
Всё обыскал но никак не могу найти именно то, что мне нужно, а именно: Со всем в принципе разобрался, только вот с ошибочными...

Написать рекурсивную функцию, проверяющую правильность расстановки круглых скобок в строке - C++
Написать рекурсивную функцию, проверяющую правильность расстановки круглых скобок в данной строке.


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

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

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