Определение правильности скобок - C#
Формулировка задачи:
Люди помогите плз! Необходимо осуществить возможность введения скобок с консоли, поместить их в стек и потом определить, правильна ли последовательность этих скобок. Вот вроде бы код но я не могу понять как занести то что ввел с клавы в стек, и как брать следующий член стека
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication23
{
class Program
{
static bool WellFormed(string astr)
{
char xi, xj;
Stack<char> stack1 = new Stack<char>();
for (int i = 0; i < astr.Length; i++)
stack1.Push(astr[i]);
while (stack1.Count > 0)
{
xi=stack1.Peek();
if (xi = '{' | xi = '[')
stack1.Push(xi);
else stack1.Pop();
if (xi!=xj)
Console.WriteLine("Nepravilno");
//Переместиться на 1 элемент вправо
}
if (stack1.Count == 0)
Console.WriteLine("Pravilno");
else Console.WriteLine("Nepravilno");
}
static void Main(string[] args)
{
string astr;
astr = Console.ReadLine();
WellFormed(astr);
}
}
}Решение задачи: «Определение правильности скобок»
textual
Листинг программы
static void CheckBrackets(string text)
{
Stack<char> stack = new Stack<char>();
foreach(Char c in text)
switch (c)
{
case '}':
if (stack.Pop() != '{')
throw new Exception("Лишняя закрывающая скобка '}'");
break;
case ']':
if (stack.Pop() != '[')
throw new Exception("Лишняя закрывающая скобка ']'");
break;
case '[':
case '{':
stack.Push(c);
break;
}
if (stack.Count > 0)
throw new Exception("Не найдена закрывающая скобка для " + stack.Pop());
}