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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конструкторы и Деструкторы в С++. Не могу разобраться( http://www.cyberforum.ru/cpp-beginners/thread688136.html
Помогите пожалуйста разобраться с конструкторами и деструкторами в с++. Не пойму , как ними пользоваться . Вот , например у меня есть код : #include "stdafx.h" #include <stdio.h> #include...
C++ где размещается массив и как его правильно удалять? У меня вопрос: в примере ниже создается объект класса Map в динамической памяти. В какой памяти тогда располагается массив m? и как его удалять(если нужно)? Удаляется ли он, если удалять как в этом... http://www.cyberforum.ru/cpp-beginners/thread688124.html
C++ Проверка на попадение точки в указанную область
Составить программу, которая печатает true, если точка с координатами (x,y) принадлежит закрашенной области, и false в противном случае: #include <conio.h> #include <iostream.h> #include...
C++ Даны два множества чисел. Используя дополнительное множество, переписать в первое – четные элементы, во второе - нечетные
Даны два множества чисел. Используя дополнительное множество, переписать в первое – четные элементы, во второе - нечетные Добавлено через 12 часов 12 минут ?????
C++ if или while? http://www.cyberforum.ru/cpp-beginners/thread688065.html
разбирая очередной урок по книге Шилдта решил попробовать заменить if на while, но почему-то во втором случае программа зацикливается! Кто может объяснить в чём причина? #include <iostream>...
C++ STL List Вот в чем проблема, была дана задача, решить которую надо было с помощью Deque и List, Deque надобыло оформить через STL, а List написать ручками... С деком вопросов не возникло, а вот лист... Не... подробнее

Показать сообщение отдельно
Vlad708
4 / 4 / 0
Регистрация: 04.11.2012
Сообщений: 72

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

04.11.2012, 12:11. Просмотров 803. Ответов 10
Метки (Все метки)

Дана задача:

Дан текст. Проверить, правильно ли в нем расставлены круглые скобки ( т.е. находится ли справа от каждой открывающей скобки соответствующая ей закрывающая скобка, а слева от каждой закрывающей - соответствующая открывающая.) Предполагается, что внутри каждой пары скобок нет других скобок.
Если скобки расставлены верно, то программа выдаст сообщение "Верно". Если же скобки отсутствуют или неправильно расставлены, программа должна выдать сообщение об ошибки.

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
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main ()
{
   clrscr ();
   char txt[256];
   printf("Введите произвольный текст имеющий скобки\n");
   gets(txt);
   /*Объявляю флажки, для определения скобок*/
   int f_o=0; //Флажок, открывающей скобки
   int f_z=0; //Флажок, закрывающей скобки
   int f_e=0; //Флажок ошибки
   for (int i=0; i<strlen(txt); i++) // Запускаю цикл проверки
   {
      if (txt[i]!='(' || txt[i]!=')') continue;
     if (txt[i]=='(') /* Проверка, если найдена открывающая скобка,
     флажок открытия включаю*/
     {
        f_o=1;
        continue; //Перехожу на следующию итерацию
     }
 
      if (txt[i]==')' && f_o==1) /* Проверка. если найдена закрывающая скобка
      и включен флажок открывающей скобки... значит флажок закрытия включаю*/
     {
         f_z=1;
     }
      if ( f_o && f_z ) /** Если оба флажка включены значит скобки
      раставлены верно и я их выключаю*/
      {
     f_o=f_z=0;
     continue; // Перехожу на следующую итерацию
      }
      else
      {
    /* Проверка, если хотя один из флажков выключен, значит скобки раставлены
    неверно... следовательно флажок ошибки я подключаю*/
    if ( ( f_o==1 && !f_z) || ( f_o!=1 && f_z==1 ) )
       {
         f_e=1;
         break; // Затем, если ошибка найдена, цикл останавливается
       }
      }
   }
   /* Делаю проверку на значения флажка ошибки */
   if (f_e) {
   printf("Ошибка");
   }
   else {
   printf("Верно");
   }
   getch ();
 
}
Во время проверки программы задаю такие варианты:

1) (Hello Пишет верно, хотя на самом деле должно быть "Неверно"
2) Hello ) Пишет верно, хотя на самом деле должно быть "Неверно"
3) Hello Пишет верно, хотя на самом деле должно быть "Неверно", так как скобок вообще нет
4) (Hello) Ну и здесь отвечает "Верно"

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