Помогите с задачей баланс скобок в консольном приложение Visual studio
Добавлено: 01 мар 2013, 09:03
вот моя программа
но она работает некорректно,если проверять ( ] то все равно пишет баланс скобок
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication6
{
class stack
{
public int maxStack;
public string[] s;
public int top = 0; // == number of elems. So [0] not used
public stack(int maxSize)
{
maxStack = maxSize;
s = new string[maxStack + 1];
}
public stack()
: this(10)
{
}
public bool push(string a)
{
if (top >= maxStack) return false;
top++;
s[top] = a;
return true;
}
public bool empty()
{ return (top == 0); }
public string pop()
{
if (top == 0)
return "*EMPTY*";
string res = s[top];
top--;
return res;
}
}
class Program
{
static void Main(string[] args)
{
stack skobki = new stack();
string str1;
str1 = Console.ReadLine();
//Console.ReadKey();
//Console.WriteLine(str1);
string[] arr = str1.Split(' ');
int c = arr.Count();
for (int i = 0; i < c; i++)
{
if (arr[i] == "(") { skobki.push(arr[i]); }
if (arr[i] == ")")
{
if (skobki.empty())
{
skobki.push(arr[i]);
}
else skobki.pop();
}
if (arr[i] == "{") { skobki.push(arr[i]); }
if (arr[i] == "}")
{
if (skobki.empty())
{
skobki.push(arr[i]);
}
else skobki.pop();
}
if (arr[i] == "[") { skobki.push(arr[i]); }
if (arr[i] == "]")
{
if (skobki.empty())
{
skobki.push(arr[i]);
}
else skobki.pop();
}
{
}
}
if (skobki.empty())
{
Console.WriteLine("Скобки сбалансированны");
}
else Console.WriteLine("Скобки не сбалансированны!");
//Console.WriteLine(s1.pop());
Console.ReadKey();
}
}
}