Loading...
DimovIvan avatar DimovIvan 16 Точки

Vectors-Lists-and-Iterators-Exercise - Brackets

Write a program which reads a single line from the console, containing brackets for a mathematical expression (only the brackets will appear in the input), and determines whether the brackets in the expression are correct. There are 3 types of brackets – {}, [] and (). {} can contain {}, [] and () brackets. Square brackets [] can contain [] and () brackets. Curved () brackets can contain only () brackets. Said simply, each type of brackets can contain the same type of brackets inside, or a “lower” type of brackets (() is lower than [] which is lower than {}). If a bracket of one type is opened, it needs to be closed before a bracket of another type is closed.
Print valid if the brackets in the expression are valid and invalid if they are not.
Examples
 
Input              Output       
[()]{}{[()()]()}    valid       
[(])                  invalid       
([])                  invalid       
()[[[()]]]{[()]}    valid     
Пробвах да направя булеви функции за трите вида скоби, но май не ги имплементирах правилно в main-a. Кажете ми дали съм на прав път или да търся коренно различен подход.

https://pastebin.com/3JqVWsqV

Тагове:
0
C++ Fundamentals
j.petrov_90 avatar j.petrov_90 373 Точки

Привет, колега,

Щеше да е добре, ако поне беше дал "работещо" решение :)

В общи линии:
- справил си се що годе добре
- задачата ти е счурена, защото се опитваш да прочетеш входа си няколко пъти
- опитай за ползваш масив в задачата. Опитай да опишеш зависимостите на отдебни скоби, коя е "по-нагоре" спрямо друга. Така няма да има значетие дали задачата има 3 вида скоби или 300.
- задачата ти върви много бавно. Това се дължи на факта, че 100 пъти проверяваш едно и също нещо.
Привер: разрал си, че кодът между скобата на индекс 0 и индекс 10 е валиден. Можеш да продължиш директно от индекс 10. Не е нужно да проверяваш отново от индекс 1...

Поздрави

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.