예제 #1
0
 static void Main(string[] args)
 {
     //StringLikeArray sla = new StringLikeArray();
     Console.WriteLine("Введите формулу:");
     //SpaceInserter si = new SpaceInserter(Console.ReadLine());
     //si.InsertSpaces();
     ShuntingYard sy = new ShuntingYard(Console.ReadLine());//si.GetOutputString());
     sy.StringAnalys();
     Console.WriteLine("Обратная польская запись:");
     Console.WriteLine(sy.ReturnReversePolish());
     Console.ReadLine();
     ReversePolish rp = new ReversePolish(sy.ReturnReversePolish());
     if (!rp.VariableCollect())
     {
         Console.WriteLine("Переменных не обнаружено");
     }
     else
     {
         Console.WriteLine("Введите значения переменных:");
     }
     for (int i = 0; i < rp.VariableSet.Count; i++)
     {
         Variable v = (Variable)(rp.VariableSet[i]);
         Console.Write(v.var + " = ");
         v.value = Convert.ToDouble(Console.ReadLine());
         rp.VariableSet[i] = v;
     }
     rp.Calculate();
     Console.WriteLine("Результат: " + rp.Result);
     Console.ReadLine();
 }
예제 #2
0
 public static double Calculate(string formula)
 {
     StringLikeArray sla = new StringLikeArray();
     SpaceInserter si = new SpaceInserter(formula.Replace(",","."));
     si.InsertSpaces();
     ShuntingYard sy = new ShuntingYard(si.GetOutputString());
     sy.StringAnalys();
     ReversePolish rp = new ReversePolish(sy.ReturnReversePolish());
     rp.Calculate();
     return rp.Result;
 }