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

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

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

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

03.05.2009, 18:33. Просмотров 981. Ответов 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     Правильное написание скобок
Посмотрите здесь:

Баланс скобок C++
Правильное деление C++
Баланс скобок C++
Выражения из скобок C++
C++ роскрытие скобок
Баланс скобок C++
Правильное понимание C++
Не правильное вычисление C++
Правильное swprintf, правильное wprintf ? C++
C++ Можно ли добавить в последовательность из различных скобок цифры и знаки, чтобы получилось правильное арифметическое выражение?
C++ Проверить правильное написание IP
C++ Правильность Скобок

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

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

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