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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.71
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
#1

Баланс круглых скобок - C++

10.03.2011, 19:14. Просмотров 6041. Ответов 42
Метки нет (Все метки)

Проверить, соблюдается ли в тексте баланс круглых скобок. Для каждой открывающей скобки ‘(‘ должна быть найдена соответствующая закрывающая ‘)’.

Примечание-Обрабатываемый в программе текст должен содержать несколько строк. Но массив строк не формировать, то есть в оперативной памяти хранить одну обрабатываемую строку. Оперативную память резервируем для одной строки. Вводим строку, анализируем её и на её место вводим новую строку.

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

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

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

Перегрузка круглых скобок как ravalue - C++
Не могу понять, как перегрузить () для того чтобы можно было использовать a(1, 2)=2; вместо a=3; ошибся, наверное не rvalue, а...

Баланс скобок - C++
Добавьте плиз условие чтоб )(-говорило что не баланс..я прост незнаю #include <stdio.h> #include <stdlib.h> #include <conio.h> ...

Баланс скобок - C++
Люди может укажите мне на ошибку в программе по которой не находит баланс..? #include<iostream.h> #include<string.h> ...

Баланс скобок - C++
проверить правильность расстановки скобок, используя контейнерные типы(стек)

42
lavan
53 / 53 / 1
Регистрация: 21.03.2009
Сообщений: 371
10.03.2011, 19:46 #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
#include<iostream>
#include<string>
using namespace std;
void analize();
static int c=1;
int main() {
    analize();
    analize();
    cin.get();
    return 0;
}
void analize() {
    string str;
     cout<<"Vvedi stroky "<<c<<":";
     short otkr=0,zakr=0;
    getline(cin,str);
    for(int i=0;i<str.size();i++) {
        if(str[i]=='(')
        otkr++;
        else if(str[i]==')')
        zakr++;
    }
    if(otkr==zakr)
    cout<<"est balans";
    else
    cout<<"net balansa";
    cout<<endl;
    c++;
}
1
igorrr37
1712 / 1340 / 162
Регистрация: 21.12.2010
Сообщений: 2,052
Записей в блоге: 10
10.03.2011, 20:10 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<algorithm>
 
int main() {
    std::string s;
    int i, dif=0;
    std::cout<<"Kolichestvo strok= ";
    (std::cin>>i).ignore();
    for(; i>0; i--){
        std::cout<<"Input string\n";
        getline(std::cin, s);
        dif+=std::count(s.begin(), s.end(), '(')-std::count(s.begin(), s.end(), ')');
    }
    std::cout<<std::boolalpha<<!dif<<"\n";
}
2
asics
Freelance
Эксперт С++
2853 / 1788 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
10.03.2011, 20:13 #4
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
#include <algorithm>
 
int main(){
  std::string str;
  while( getline(std::cin, str) )
    std::cout << ( std::count(str.begin(), str.end(), '(') == std::count(str.begin(), str.end(), ')')? "YES" : "NO" ) << '\n';
  return 0;
}
1
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
10.03.2011, 21:06 #5
а вот такая комбинация считается "сбалансированной"?
")("
1
Kastaneda
10.03.2011, 21:08
  #6

Не по теме:

igorrr37, я такого еще не видел)

C++
1
(std::cin>>i).ignore();

1
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
10.03.2011, 21:24  [ТС] #7
no0ker, нет такая комбинация ")(" не подходит
0
asics
Freelance
Эксперт С++
2853 / 1788 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
10.03.2011, 21:26 #8
barlog, Тогда ни один вышенаписаной код не катит
1
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
10.03.2011, 21:36  [ТС] #9
lavan, static int c=1;
а зачем это?

Добавлено через 3 минуты
в задании же сказано на каждую открывающуюся "(".......а ")(" - здесь сначала закрывающая...впрочем как в обычном тесте....(..)...((......))....(..)
0
ValeryS
Модератор
6786 / 5194 / 497
Регистрация: 14.02.2011
Сообщений: 17,432
10.03.2011, 21:44 #10
может сделать так
переменная =0
если скобка ( +1
если ) -1
после каждого действия проверять переменную
если отрицательно тут же выходить закрывающих больше чем открывающих = непорядок
дошли до конца текста если 0 есть баланс
любое число(положительное отрицательное отработали ранее) нет баланса

Добавлено через 3 минуты
кстати из задания непонятно баланс во всем тексте или в каждой строке??
1
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
10.03.2011, 22:28  [ТС] #11
ValeryS, а чем этот алгоритм лучше предыдущих?опть таки , если у нас будет ")(" то в итоге будет 0, а баланса нет.
в задание написано - Проверить, соблюдается ли в тексте баланс круглых скобок.

Добавлено через 3 минуты
хотя из примечания -Вводим строку, анализируем её и на её место вводим новую строку.

выходит анализируем строку....но в задание именно текст
0
ValeryS
Модератор
6786 / 5194 / 497
Регистрация: 14.02.2011
Сообщений: 17,432
10.03.2011, 22:29 #12
Цитата Сообщение от ValeryS Посмотреть сообщение
после каждого действия проверять переменную
если отрицательно тут же выходить закрывающих больше чем открывающих = непорядок
т.е если у тебя первая (
перем =1
потом )
перем=0
продолжаем проверку
другая ситуация
)
перем=-1
тут же выходим явный дисбаланс
1
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
10.03.2011, 22:32  [ТС] #13
ValeryS, ага действительно,все ясно,логично..)
0
ValeryS
Модератор
6786 / 5194 / 497
Регистрация: 14.02.2011
Сообщений: 17,432
10.03.2011, 22:34 #14
Цитата Сообщение от barlog Посмотреть сообщение
отя из примечания -Вводим строку, анализируем её и на её место вводим новую строку.
выходит анализируем строку....но в задание именно текст
вот это я и спрашивал!
если ( на первой стороке
а ) на 20
это сбалансированный текст или нет?
1
barlog
2 / 2 / 0
Регистрация: 03.11.2009
Сообщений: 227
10.03.2011, 22:43  [ТС] #15
ValeryS, по идеи да,да сбалансированный
0
10.03.2011, 22:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2011, 22:43
Привет! Вот еще темы с ответами:

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

Баланс скобок - C++
Помогите пожалуйста!!! Собственно задание: Текст в файле содержит многократно вложенные круглые скобки. Если баланс скобок соблюден,...

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

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


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

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

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