Пример #1
0
        public void WorkOutResult()
        {
            string str = strcal.GetString();

            SortString(str);
            result = Calculator();
        }
Пример #2
0
        public double GetResult()
        {
            string str = strcal.GetString();

            if (str == "")
            {
                SortBlock2G.error.ErrorMessage += "Input Is Wrong!\n";
                errorMessage += "输入错误\n";
                this.Wrong    = true;
                return(0);
            }
            else
            {
                SortString(str);


                return(Calculator());
            }
        }
Пример #3
0
        public static void Main0(string[] args)
        {
//			Calculte cal=new Calculte ();
//			string str=cal.GetString ();
//			string strcal=cal .BackSort (str);
//			double result=cal .Calculator (strcal );

//------------------------------------------------------------------------------

//----------------------主程序---------------------------------------------------
            char op = '0';

            while (op != 'q')
            {
                CalString cal = new CalString("");
                cal.UIGetString();



                SortBlock2 sort = new SortBlock2();
                sort.GetCalString(cal);

                double result = sort.GetResult();
                if (sort.IsError())
                {
                    Console.WriteLine(sort.ShowInfo());
                }
                Console.Write(cal.GetString() + "=" + result.ToString() + '\n' + "按q退出,其他键继续" + '\n');
                SortBlock2.Wrong = false;
                SortBlock2.error.ErrorMessage = "";
                op = Console.ReadKey().KeyChar;
            }

//----------------------------------------------------------------------------------------------
//          cos(sin(20+30-20)*20+50)*4/2^2+1/2+cos(sin(20+30-20)*20+50)*4/2^2+1/2
//          pow(sin(30)*4,2)
//          SortBlock2 Release模式下用时32
//			int i=cal.FindOp(0,'(');
//			int k=cal.FindBrackets(i);
//			string str=cal.FromToEnd(i,k);
//			Console.WriteLine(str);

//			其实C#自带的就已经很屌了 Console.WriteLine(3+30*3*(3-4));

            /**
             * 测试找括号
             */
//			char []opts={'(',')' };
//			string str="(1+2)+1*(2+3)";
//			CalString scal=new CalString(str);
//			int [] ars=scal.FindAllElements(scal.FindOps,opts);
//			foreach (int element in ars) {
//				Console.WriteLine(element);
//			}

            /*
             * 测试逗号查找
             */
//		    char []opts={','};
//			string str="pow(1,1,2,3)";
//			CalString scal=new CalString(str);
//			int [] ars=scal.FindAllElements(opts);
//			foreach (int element in ars) {
//				Console.WriteLine(element);
//			}

//			Console.WriteLine(Math.Log(Math.E));

            /*
             * 测试FuncName的FindFunName方法
             */
//			Console.WriteLine(FuncName.FindName("cos"));
//				Console.WriteLine(FuncName.CheckFun("cos",1));
            //测试FindOp
//			int c=scal.FindOp(0,opts);
//			Console.WriteLine(c);
//			测试时间
            //不改730多
            //加一个方法 改成NoGetResult 740多
            //用Paraller 1300多
            //Paraller 干for循环只要410多
//				char op = '0';
//			while (op != 'q') {
//				CalString cal = new CalString("");
//				cal.UIGetString();
//			    Stopwatch sw=new Stopwatch();
//			    sw.Start();
//
//
//				double result=0;
////				for(int i=0;i<10000;i++)
////				{
////					  sort = new SortBlock2();
////				    sort.GetCalString(cal);
////
////					result = sort.NoGetResult();
////				}
////
//				Parallel.For( 0,10000,(i)=>
//				{
//				    SortBlock2 sort= new SortBlock2();
//				    sort.GetCalString(cal);
//
//					result = sort.NoGetResult();
//				             });
////				if (sort.IsError()) {
////					Console.WriteLine(sort.ShowInfo());
////				}
//				Console.Write(cal.GetString() + "=" + result.ToString() + '\n' + "按q退出,其他键继续" + '\n');
//				sw.Stop();
//				long time=sw.ElapsedMilliseconds;
//				Console.WriteLine(time);
//				op = Console.ReadKey().KeyChar;
//			}
//
//
//
//
//



            Console.ReadKey();
        }