Родились сегодня:
Антонина


Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Модератор

672

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

325

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Академик

278

Россия, Санкт-Петербург


ID: 325460

CradleA

Академик

211

Беларусь, Минск


ID: 401888

puporev

Профессор

140

Россия, Пермский край


ID: 400815

alexleonsm

6-й класс

130


ID: 137394

Megaloman

Мастер-Эксперт

120

Беларусь, Гомель


8.8.12

06.05.2021

JS: 2.8.16
CSS: 4.5.4
jQuery: 3.6.0
DataForLocalStorage: 2021-05-06 21:16:03-standard


Создание программ на языках C и C++.

Администратор раздела: CradleA (Академик)

Консультация онлайн # 159620

Раздел: С / С++
Автор вопроса: Ryabichko
Дата: 04.02.2009, 18:48 Консультация закрыта
Поступило ответов: 3

Проверить, одинаковое ли количество открывающихся и закрывающихся скобок в данной строке.

Ответ # 242914 от Dutka M.M.
Здравствуйте, Ryabichko!
try this:)
......
char str[];//my string
int num=0, i=0;
...
while(str[i]!='\0')
{
if(str[i] == '(' ) ++num;
else if(str[i] == ')' ) --num;
++i;
}

if(num == 0){/*there are equal number of '(' and ')' symbols*/}
else....

Dutka M.M.

Посетитель
04.02.2009, 19:32
Ответ # 242918 от realbustard
Здравствуйте, Ryabichko!
Вот простой вариан решения.
Компилировано в MS VS 2005.
Будут вопросы, задавайте в минифоруме.
Код
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;

int main()
{
	setlocale(LC_CTYPE, "Russian");

	char str[100];
	cout << "Введите строку:";
	gets(str);


	char* ch = str;
	int count = 0;		//счетчик скобок

	while(*ch){
		if(*ch == '(')
			count++;
		if(*ch == ')')
			count--;
		ch++;
	}

	if(count == 0)
		cout << "\nВ строке одинаковое количество открывающихся и закрывающихся скобок";
	if(count < 0)
		cout << "\nВ строке больше закрывающихся скобок";
	if(count > 0)
		cout << "\nВ строке больше открывающихся скобок";

	_getch();
	return 0;
}



realbustard

Посетитель
04.02.2009, 20:04
Ответ # 243006 от Evgenijm
Здравствуйте, Ryabichko!

Могу добавить, что если необходим еще и грамматический анализ скобок, то закрывающихся скобок никогда не должно быть больше открывающихся. То есть, предыдущий пример достаточно изменить так:

if(*ch == ')')
{
if(count!=0)
count--;
else
{
cout << "Неверное вложение скобок";
return;
}
}

Evgenijm

Посетитель
06.02.2009, 04:27
Мини-форум консультации # 159620

Нет сообщений в мини-форуме

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

Лучшие эксперты раздела

CradleA

Академик

Рейтинг: 211

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 74

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 59

Хватов Сергей

Академик

Рейтинг: 27

Вадим Исаев ака sir Henry

Мастер-Эксперт

Рейтинг: 2

Степанов Иван /REDDS

4-й класс

Рейтинг: 1