parva-88
پنج شنبه 02 دی 1389, 14:45 عصر
یه برنامه نوشتم گه بوسیله stack میاد و متوازن بودن پارانتز ها رو مشخص میکنه و جوا ب هم میده ولی برای عبارت هایی که پارانتز بسته شون بیشتره جواب نمیدن!!!!علت چیه؟
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Specialized;
using System.Collections;
namespace paranthesis
{
public class Program
{
static void Main(string[] args)
{
string sentence;
Console.WriteLine("enter a sentence:");
sentence = Console.ReadLine();
equal(sentence);
Console.ReadKey();
}
///////////////////////////////////////////////////////////////////////////
static public void equal(string s)
{
Stack stk1 = new Stack();
Stack stk2 = new Stack();
string symbol;
for (int i = 0; i < s.Length; i++)
{
symbol = s.Substring(i, 1);
if (!np(symbol))
{
stk2.Push(symbol);
}
if (np(symbol))
{
if (symbol == "(")
stk1.Push("(");
if (stk1.Count != 0)
{
if (symbol == ")")
stk1.Pop();
}
}
}//end of if
if(stk1.Count==0)
Console.WriteLine("eq");
if(stk1.Count!=0)
Console.WriteLine("not equ");
}//end of method equal
///////////////////////////////////////////////////////////////////////////
static public bool np(string n)
{
if (n == ")")
return true;
if (n == "(")
return true;
else
return false;
}//end of np method
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Specialized;
using System.Collections;
namespace paranthesis
{
public class Program
{
static void Main(string[] args)
{
string sentence;
Console.WriteLine("enter a sentence:");
sentence = Console.ReadLine();
equal(sentence);
Console.ReadKey();
}
///////////////////////////////////////////////////////////////////////////
static public void equal(string s)
{
Stack stk1 = new Stack();
Stack stk2 = new Stack();
string symbol;
for (int i = 0; i < s.Length; i++)
{
symbol = s.Substring(i, 1);
if (!np(symbol))
{
stk2.Push(symbol);
}
if (np(symbol))
{
if (symbol == "(")
stk1.Push("(");
if (stk1.Count != 0)
{
if (symbol == ")")
stk1.Pop();
}
}
}//end of if
if(stk1.Count==0)
Console.WriteLine("eq");
if(stk1.Count!=0)
Console.WriteLine("not equ");
}//end of method equal
///////////////////////////////////////////////////////////////////////////
static public bool np(string n)
{
if (n == ")")
return true;
if (n == "(")
return true;
else
return false;
}//end of np method