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

правильно ли я выполнил задание? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа со звуком http://www.cyberforum.ru/cpp-beginners/thread640709.html
Здравствуйте, вот занимаюсь работай со звуком, вообще задача стоит в том что б сделать оцифровку звука, записать данные в буфер и вывести полученые числа (случайные, таковыми они должны быть,...
C++ Вызов функций Можно ли программно вызвать все функции записанные в файле? http://www.cyberforum.ru/cpp-beginners/thread640695.html
Удаление символа C++
как удалить последний символ в файле ???
в чём может быть ошибка? C++
char brackets; while( (strlen(brackets)-1) != '~' ) { cin.getline(brackets, 500); cout << brackets << endl; if((strlen(brackets)-1) == '~')
C++ Переопределение, множественная инициализация http://www.cyberforum.ru/cpp-beginners/thread640666.html
Что означает эта ошибка ??? 1>------ Построение начато: проект: FUN_TO__, Конфигурация: Debug Win32 ------ 1>Компиляция... 1>FUN_TO__.cpp...
C++ Выбор среды Eclipse Пришлось озаботиться вопросам на переход к бесплатной IDE для C++. Выбор пал на Eclipse. Настроил Eclipse IDE for C/C++ Developers. Вопрос в другом. Тут:... подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.08.2012, 09:44
Я бы сделал как-нибудь так...
Особо не тестировал.

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
#include <iostream>
#include <string>
#include <deque>
#include <algorithm>
 
int main()
{
   const std::string l_brackets = "([<{";
   const std::string r_brackets = ")]>}";
   const std::string test_s = "(<[{}[{}([])]]([<>])>)";
   
   std::deque<char> brackets;
   auto find = [](const std::string& s, char c) { return std::find(s.begin(), s.end(), c); };
   auto pos = test_s.begin();
   for (; pos != test_s.end(); ++pos)
   {
      if (find(l_brackets, *pos) != l_brackets.end())
      {
         brackets.push_back(*pos);
      }
      else
      {
         auto r_pos = find(r_brackets, *pos);
         if (r_pos != r_brackets.end())
         {
            auto c_pos = std::find(brackets.begin(), brackets.end(), l_brackets[r_pos - r_brackets.begin()]);
            if (c_pos == brackets.end())
            {
               break;
            }
            brackets.pop_back();
         }
      }
   }
   std::cout << "Expression is right: " << std::boolalpha << (pos == test_s.end() && brackets.empty()) << std::endl;
}
http://liveworkspace.org/code/ef69a6245dd0836ff67abb5e17f681b9
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.