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

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

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

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

03.05.2009, 18:33. Просмотров 990. Ответов 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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int flag=0;
int z=RichEdit1->Lines->Text.Length()-2;
 
for (int i=1; i<=z; i++)
{
if (RichEdit1->Lines->Strings[0][i] =='(')
flag--;
 
if (RichEdit1->Lines->Strings[0][i] ==')')
flag++;
 
if (RichEdit1->Lines->Strings[0][i] =='[')
flag--;
 
if (RichEdit1->Lines->Strings[0][i] ==']')
flag++;
 
 
}
 
if (flag==0)
ShowMessage("Правильно");
else
ShowMessage("Не правильно");
 
 
}
Да и еще есть проблема...
Задача
Изобразить на экране N кривых-эвольвент, образованных точкой, лежащей на прямой, обкатывающейся по окружности без скольжения. Каждая эвольвента строится при обкатывании по дуге в 2пи/N угловых градусов.
как ваааще делать ее ???? ума не преложу... можете подсказать..?(очень прошу )
С уважением Дмитрий.

Добавлено через 1 час 4 минуты 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
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
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;
 
const char s1[2]={'(',')'};
const char s2[2]={'[',']'};
 
int main()
{
int s1c=0,s2c=0;
string str;
int i;
bool err=false;
bool s1b=false,s2b=false;
 
cout<<"Vvedite stroku: \n";
cin>>str;
 
for(i=0;i<str.length();i++)
 {
  if(str[i]==s1[0]) 
   {
    s1c++;
    s1b=true;
    s2b = false;
   }
  if(str[i]==s1[1])
   {
    s1c--;
    if(s2b==true) err=true;
    s1b=false;
   }
  if(str[i]==s2[0]) 
   {
    s2c++;
    s2b = true;
    s1b = false;
   }
  if(str[i]==s2[1]) 
   {
    s2c--;
    if(s1b==true) err=true;
    s2b=false;
   }
 }
 
if(s1c==0 && s2c==0) cout<<"Balans skobok ne narushen\n";
else 
 {
  if(s1c!=0)
   {
    cout<<"Narushen balans skobok tipa '"<<s1[0]<<s1[1]<<"'\n";
    if(s1c<0) cout<<"Izbytok '"<<s1[1]<<"'("<<-s1c<<")\n";
    else cout<<"Izbytok '"<<s1[0]<<"'("<<s1c<<")\n";
   }
  if(s2c!=0)
   {
    cout<<"Narushen balans skobok tipa '"<<s2[0]<<s2[1]<<"'\n";
    if(s2c<0) cout<<"Izbytok '"<<s2[1]<<"'("<<-s2c<<")\n";
    else cout<<"Izbytok '"<<s2[0]<<"'("<<s2c<<")\n";
   }
 }
 
if(err) cout<<"\nSkobki rasstavleny neverno!\n"; 
 
getch();
return 0;
}
А вот со второй просто проблема.... помогите пожалуста...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2009, 18:33     Правильное написание скобок
Посмотрите здесь:

Проверить правильное написание IP - C++
Пытаюсь проверить верное написание IP, нужно из строки взять четыре числа и проверить их на 0&lt;=x&lt;=255. допустим что-то типа примера, но...

Можно ли добавить в последовательность из различных скобок цифры и знаки, чтобы получилось правильное арифметическое выражение? - C++
Здравствуйте. Прошу помощи в решение задачи. Дана конечная последовательность, состоящая из левых и правых скобок pазличных заданных...

Не правильное вычисление - C++
Для примера такие входные данные: 6 1 4 4 4 1 1 Переменные b и c забиваются таким выводом: -858993460 int Не могу понять от куда...

Правильное деление - C++
Вычислить.Х вещественное и натуральное N : Х/(1+X/(2+X/(3+X/(…/(N+X)…).Написать обычную функцию и рекурсию.Немогу разобраться с делением. ...

Балланс скобок - C++
Собственно задача заключается в том, что бы написать программу ,которая с помощью стека считывает последовательность скобок вида : (), {},...

Выражения из скобок - C++
Построить все правильные скобочные выражения . На входе число - на выходе все строки Например 2 () 4 ()() (()) 6 ()()() ...

Правильность Скобок - C++
Суть задачи такова:Дана строка,состоящая только из скобок и латинских символов. Правильные строки: 1)Пустая строка и строка, состоящая...

роскрытие скобок - C++
(x-a)(x+b)=x^2+bx-ax-ab=x^2(+ или -)сx+d a,b,c,d какие-то числа с - получается при сложение bx c ax d - ето перемножение a,b можно...

Последовательность скобок - C++
Дана последовательность скобок, содержащая скобки четырех видов: (), , {}, &lt;&gt;. Требуется найти самую короткую последовательность с...

Замена скобок - C++
Почему-то открывающая скобка '(' - нормально заменяется, а закрывающая не меняется вовсе. В чем дело? Вот код: string GetPage(string...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sergei
1429 / 696 / 41
Регистрация: 22.04.2008
Сообщений: 1,608
03.05.2009, 18:55     Правильное написание скобок #2
Почитай про синтаксический разбор выражений.
Evg
Эксперт CАвтор FAQ
17537 / 5775 / 370
Регистрация: 30.03.2009
Сообщений: 15,904
Записей в блоге: 26
03.05.2009, 19:04     Правильное написание скобок #3
Принцип такой. Бежишь по строке
1. Встретил левую скобку - засунул в стек
2. Встретил правую скобку - если стек пустой, то ошибка. Иначе достаёшь из стека. Проверяешь, если высунул круглую (левую) вскобку, а у тебя правая квадртнтая (или наоборот) - ошибка
3. Если по окончании разбора строки стек НЕ пустой - ошибка
Ответ Создать тему
Опции темы

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