private List <CalData> Bubble_Sort(List <CalData> unsorted_list) { int n = unsorted_list.Count; List <CalData> sorted_list = new List <CalData>(); int x; int y; for (int j = 0; j < n; j++) { sorted_list.Add(unsorted_list.ElementAt(j)); } try { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { CalData index1 = new CalData(); CalData index2 = new CalData(); if (unsorted_list[j].ge_serial_no.Trim().Contains('X') || unsorted_list[j].ge_serial_no.Trim().Contains('R') || unsorted_list[j + 1].ge_serial_no.Trim().Contains('X') || unsorted_list[j].ge_serial_no.Trim().Contains('R')) { index1.ge_serial_no = unsorted_list.ElementAt(j).ge_serial_no.Replace('X', ' ').Trim(); index2.ge_serial_no = unsorted_list.ElementAt(j + 1).ge_serial_no.Replace('X', ' ').Trim(); x = Convert.ToInt32(index1.ge_serial_no.Replace('R', ' ').Trim()); y = Convert.ToInt32(index2.ge_serial_no.Replace('R', ' ').Trim()); } else { x = Convert.ToInt32(index1.ge_serial_no.Trim()); y = Convert.ToInt32(index2.ge_serial_no.Trim()); } //Console.WriteLine(x); //Console.WriteLine(y); if (x > y) { // swap temp and arr[i] CalData temp = sorted_list[j]; sorted_list[j] = sorted_list[j + 1]; sorted_list[j + 1] = temp; } //Console.WriteLine("index j: " + j + " "); //Console.WriteLine(sorted_list[j].ge_serial_no); } } } catch (Exception ex) { } return(sorted_list); }
public override global::System.Data.DataSet Clone() { CalData cln = ((CalData)(base.Clone())); cln.InitVars(); cln.SchemaSerializationMode = this.SchemaSerializationMode; return(cln); }
public CalData GetCalDataFromTDC(string strName) { if (tdc.CheckName(strName)) { CalData datatemp = tdc.GetData(strName).GetCalData(); return(datatemp); } return(null); }
public Matrix ConvertToMatrix() { string tempExpress = strExpress.Substring(1, strExpress.Length - 2); string[] rows = tempExpress.Split(';'); string[] firstRow = rows[0].Trim().Split(new char[] { ' ', ',' }); int col = 0; for (int i = 0; i < firstRow.Length; i++) { if (string.IsNullOrEmpty(firstRow[i])) { } else { col++; } } int row = rows.Length; double[,] data = new double[row, col]; try { for (int i = 0; i < row; i++) { string[] singlerow = rows[i].Trim().Split(new char[] { ' ', ',' }); int column = 0; for (int j = 0; column < col; j++) { if (j < singlerow.Length) { if (string.IsNullOrEmpty(singlerow[j])) { continue; } string str = new ExpData(singlerow[j].Trim()).GetValueEx(); data[i, column] = double.Parse(str); } else { data[i, column] = 0; } column++; } } } catch (ExpError e) { throw new AssignedError(e.Message + "\nAssignmentError::矩阵转换出错\n"); } Matrix matrix = new Matrix(data); cd = matrix; return(matrix); }
public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { CalData ds = new CalData(); global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); any.Namespace = ds.Namespace; sequence.Items.Add(any); type.Particle = sequence; global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); if (xs.Contains(dsSchema.TargetNamespace)) { global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); try { global::System.Xml.Schema.XmlSchema schema = null; dsSchema.Write(s1); for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();) { schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); s2.SetLength(0); schema.Write(s2); if ((s1.Length == s2.Length)) { s1.Position = 0; s2.Position = 0; for (; ((s1.Position != s1.Length) && (s1.ReadByte() == s2.ReadByte()));) { ; } if ((s1.Position == s1.Length)) { return(type); } } } } finally { if ((s1 != null)) { s1.Close(); } if ((s2 != null)) { s2.Close(); } } } xs.Add(dsSchema); return(type); }
/// <summary> /// 单参数函数的求值 /// </summary> /// <param name="str">函数名 添加新的函数必须在FuncName的Option[] 数组中添加登记才有效</param> /// <param name="num">参数</param></param> /// <returns>计算结果</returns> public static CalData CalFunc(string str, CalData paramer) { double num = 0; if (new Calculator().CheckFunName(str)) { num = double.Parse((paramer as ExpData).GetValueEx()); } switch (str) { case "sin": return(new ExpData(Math.Sin(num * pi).ToString())); case "cos": return(new ExpData(Math.Cos(num * pi).ToString())); case "tan": return(new ExpData(Math.Tan(num * pi).ToString())); case "sqrt": return(new ExpData(Math.Sqrt(num).ToString())); case "abs": return(new ExpData(Math.Abs(num).ToString())); case "circlearea": return(new ExpData((Math.PI * num * num).ToString())); case "exp": return(new ExpData((Math.Exp(num).ToString()))); case "ln": return(new ExpData((Math.Log(num)).ToString())); case "lg": return(new ExpData((Math.Log10(num)).ToString())); case "asin": return(new ExpData((Math.Asin(num) * 180 / PI).ToString())); case "acos": return(new ExpData((Math.Acos(num) * 180 / PI).ToString())); case "atan": return(new ExpData((Math.Atan(num) * 180 / PI).ToString())); default: throw new CalculatorException("该函数参数错误,仅包含一个参数或者函数错误\n"); } }
private CalData CalculatorArithmetic() { //bugaid,只是最终完成简单的四则运算,添加双目运算符支持很简单的,基本上不用改什么 //带参函数部分在PutFuncIntoData里面完成 CalData sum = null; for (int i = 0; data[i] != null; i++) { if (data[i].GetTypeN() == 1) { stacknum.Push(data[i].GetCalData()); } else { if (data[i].GetOption().op == '!') { CalData num1 = stacknum.Pop(); int sumNumber = calculator.Factorial((int )(double.Parse(((ExpData)num1).GetValueEx()))); sum = new ExpData(sumNumber.ToString()); } else { char op = data[i].GetOption().op; CalData num1 = stacknum.Pop(); CalData num2 = stacknum.Pop(); if (num2 is ExpData && num1 is Matrix) { CalData temp = num2; num2 = num1; num1 = temp; if (op == '-') { op = '+'; num2 = (num2 as Matrix) * (-1); } } sum = Calculator.CalSingleOperatorGeneric(num2, num1, op); } stacknum.Push(sum); } } CalData result = stacknum.Pop(); if (stacknum.IsNotEmpty()) { Wrong = true; stacknum.message.ErrorMessage += "Express Wrong!"; } if (this.calculator.Wrong) { this.Wrong = true; } return(result); }
public bool CreateData(string name, CalData value) { bool right = true; if (name != "pi" && name != "e") { inputs.Add(new TempData(name, value)); } else { right = false; } return(right); }
public BlockData ConverToBlock() { FuncString funstring = new FuncString(strExpress); int leftBracket = funstring.FindOp(0, '('); int rightBracket = funstring.FindOp(0, ')'); int commaSymbol = funstring.FindOp(0, ','); string[] ab = strExpress.Split(','); double a = 0; double b = 0; try { string strA = new ExpData(ab[0].Substring(1)).GetValueEx(); string strB = new ExpData(ab[1].Substring(0, ab[1].Length - 1)).GetValueEx(); a = double.Parse(strA); b = double.Parse(strB); } catch (ExpError e) { throw new AssignedError(e.Message + "\nAssignmentError::区间转换出错" + "\n"); } BlockData bd = new BlockData(a, b); bool left; bool right; if (leftBracket != -1 && leftBracket < commaSymbol) { left = false; } else { left = true; } if (rightBracket != -1 && rightBracket > commaSymbol) { right = false; } else { right = true; } bd.SetBlockBounderAvailable(left, right); cd = bd; return(bd); }
/// <summary> /// 计算返回结果 但是不修改表达式的值 /// </summary> /// <returns></returns> public override string GetValueEx() { CalData cd = UIController.SimpleCal(express); if (cd == null) { throw new ExpError("ExpError::Not defined " + express + "!Ex"); } string str = (cd as ExpData).GetValueEx(); if (str == null) { str = "0"; throw new ExpError("ExpError::Something Wrong Happened!Ex"); } value = str; return(str); }
/// <summary> /// 一次性计算出结果 返回结果值并修改表达式 /// </summary> /// <returns></returns> public string GetValueFinal() { CalData cd = UIController.SimpleCal(value); if (cd == null) { throw new AssignedError("AssignedError::Not defined " + express + "!Ex"); } ExpData ed = cd as ExpData; string str = ed.GetValueEx(); // string s =new UExpData ((cd as ExpData).GetExpress()).GetValueEx(); if (str == null) { str = "0"; throw new ExpError("ExpError::Something Wrong Happened!Final" + '\n'); } value = str; express = str; return(str); }
public DataType GetDataType() { DataType dt = new DataType(); function.FuncString funstring = new function.FuncString(strExpress); int leftSquareBracket = funstring.FindOp(0, '['); int rightSquareBracket = funstring.FindOp(0, ']'); int leftBracket = funstring.FindOp(0, '('); int rightBracket = funstring.FindOp(0, ')'); int commaSymbol = funstring.FindOp(0, ','); int semicolon = funstring.FindOp(0, ';'); if (commaSymbol == -1 && semicolon == -1) { dt = DataType.EXP; cd = new UExpData(strExpress); (cd as UExpData).GetValueFinal(); return(dt); } if (semicolon != -1) { dt = DataType.MATRIX; ConvertToMatrix(); return(dt); } if (commaSymbol != -1) { dt = DataType.BLOCK; ConverToBlock(); return(dt); } return(dt); }
public void SetValue(CalData value) { this.Value = value; }
public void Run() { Console.WriteLine("Hello World!Matrix allowed. type: help() to know how to use"); while (InputData != "exit") { GetDataToInput(); // PushToShow("进入run程序"); funstring.SetString(InputData); int Extype = funstring.AnalyseEquation(); if (Extype == 1 || Extype == 4) //没有等号 判断为命令或求值之类 // PushToShow("不是存值"); { AnalyseInputG(Extype); continue; } //保存起来 string funs = funstring.GetFuncName(); if (!CheckNameAcceptable(funs)) { continue; } CalData caldata = null; switch (Extype) { case 2: DealAssignment da = new DealAssignment(funstring.GetFuncExpress()); if (tdc.CheckName(funs)) { DataType getdt = new DataType(); try { getdt = da.GetDataType(); } catch (ExpError e) { PushToShow(e.Message); continue; } if (getdt == DataType.EXP) { try { ((UExpData)(da.GetCalData())).GetValueFinal(); //防止循环调用SimpleCal--> ReplaceParamers--> GetValueEx-->SimpleCal } catch (AssignedError e) { PushToShow(e.Message); continue; } } } try { caldata = da.GetCalData(); } catch (AssignedError e) { PushToShow(e.Message); continue; } break; case 3: caldata = new FuncData(funstring.GetFuncExpress(), funstring.GetParamers()); break; default: break; } if (CheckDuplicationName(funs)) { tdc.Remove(tdc.FindPosition(funs)); } if (funstring.CheckFunName(funs)) { PushToShow("Variable Name not acceptable!"); continue; } if (tdc.CreateData(funstring.GetFuncName(), caldata)) { PushToShow("数据已保存"); } else { PushToShow("Not accept input!"); } } }
// public void SetNum(double a) // { // this.num = a; // TypeN = 1; // } public void SetCalData(CalData a) { this.caldata = a; TypeN = 1; }
private int PutFuncToData(int i) { CalData cd = GetCalDataFromTDC(strFun); if (cd != null) { data [da] = new Data(); data[da].SetCalData(cd); da++; string str = strcal.GetString(); char str_Num_Check = str[i - strFun.Length - 1]; //此处还有问题 if (strcal.CheckNum(str_Num_Check)) //解决 t=6 2t { data[da] = new Data(); data[da].SetOption(new Option('*')); da++; } strFun = ""; return(i - 1); } int k = 0; SortBlockData sortblock2 = new SortBlockData( ); FuncName fn = new FuncName(); fn.SetFuncName(strFun); strFun = ""; if ((new Calculator()).CheckFunName(fn.GetFuncName())) { k = strcal.FindBrackets(i + 1); //只是简单的换个函数就可以实现多重嵌套函数了 if (k == -1) { SortBlockData.error.ErrorMessage += "括号不成对\n"; errorMessage += "括号不成对\n"; this.Wrong = true; return(-1); } string stri = strcal.FromToEnd(i, k - 1); //此处应该提取一个专门把函数里面的参数弄出来的类或方法 CalString str = new CalString(stri); // int[] split = str.FindAllElements(new char[]{ ',' }); int[] split = str.FindOpOutOfBrackets(','); split = str.PushToHead <int>(split, -1); string[] strsplit = new string[20]; //保存分割后的字符串 for (int j = 0; j < split.Length - 1; j++) { strsplit[j] = str.FromToEnd(split[j], split[j + 1] - 1); } int count = 0; strsplit[split.Length - 1] = str.FromToEnd(split[split.Length - 1], str.GetLength() - 1); CalData[] res = new CalData[split.Length]; //保存结果 foreach (var element in strsplit) { // Console.WriteLine(element); if (element == null) { break; } CalString strpart = new CalString(element); SortBlockData sortblock = new SortBlockData(); sortblock.SetCalString(strpart); res[count] = sortblock.GetResult(); if (sortblock.Wrong) { sortblock2.Wrong = true; sortblock2.errorMessage += sortblock.errorMessage; } count++; } CalData resu = null; resu = Calculator.CalFunc(fn.GetFuncName(), res); if (sortblock2.Wrong || sortblock2.calculator.Wrong) { this.Wrong = true; errorMessage += sortblock2.errorMessage; } data [da] = new Data(); data[da].SetCalData(resu); da++; } else { stackchop.message.ErrorMessage += "include unkown characters\n"; SortBlockData.error.ErrorMessage += fn.GetFuncName().Length > 1?"Include UnKnown 字符串":"Include UnKnown 字符"; throw new SortBlockException(fn.GetFuncName().Length > 1?"Include UnKnown 字符串":"Include UnKnown 字符" + fn.GetFuncName() + " 还未定义"); errorMessage += fn.GetFuncName().Length > 1?"Include UnKnown 字符串\n":"Include UnKnown 字符\n"; Wrong = true; //其实这句话可以不要,不要就可以 时间6+你好9=15 而不出错; return(i); } return(k); }
public void Run() { InputData = GetInput(); // PushToShow("进入run程序"); funstring.SetString(InputData); int Extype = funstring.AnalyseEquation(); if (Extype == 1 || Extype == 4) { //没有等号 判断为命令或求值之类 // PushToShow("不是存值"); AnalyseInputG(Extype); return; } //保存起来 string funs = funstring.GetFuncName(); CalData caldata = null; switch (Extype) { case 2: DealAssignment da = new DealAssignment(funstring.GetFuncExpress()); if (tdc.CheckName(funs)) { DataType getdt = new DataType(); try { getdt = da.GetDataType(); } catch (ExpError e) { PushToShow(e.Message, "error"); return; } if (getdt == DataType.EXP) { try { ((ExpData)(da.GetCalData())).GetValueFinal(); //防止循环调用SimpleCal--> ReplaceParamers--> GetValueEx-->SimpleCal } catch (AssignedError e) { PushToShow(e.Message, "error"); return; } } } try { caldata = da.GetCalData(); } catch (AssignedError e) { PushToShow(e.Message, "error"); return; } break; case 3: caldata = new FuncData(funstring.GetFuncExpress(), funstring.GetParamers()); break; default: break; } if (CheckDuplicationName(funs)) { tdc.Remove(tdc.FindPosition(funs)); } if (funstring.CheckFunName(funs)) { PushToShow("Variable Name not acceptable!", "error"); return; } if (tdc.CreateData(funstring.GetFuncName(), caldata)) { PushToShow("数据已保存"); } else { PushToShow("Not accept input!", "error"); } #region 之前写的不好就改了 // int a = funstring.FindOp(0, '='); // int b = funstring.FindOp(0, '('); // if (a != -1) { // // // if (b > a) { // funstring.AnalyseEquation(); //// funstring.ShowParamers(); // if(CheckDuplicationName()) continue; // // tdc.CreateData(funstring.GetFuncName(), funstring.GetFuncExpress(), funstring.GetParamers()); // } else { // funstring.AnalyseVariable(); //// funstring.ShowParamers(); // if(CheckDuplicationName()) continue; // tdc.CreateData(funstring.GetFuncName(), funstring.GetFuncExpress()); // } // } else { // // } #endregion }
public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); CalData ds = new CalData(); global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); any1.Namespace = "http://www.w3.org/2001/XMLSchema"; any1.MinOccurs = new decimal(0); any1.MaxOccurs = decimal.MaxValue; any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; sequence.Items.Add(any1); global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; any2.MinOccurs = new decimal(1); any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; sequence.Items.Add(any2); global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); attribute1.Name = "namespace"; attribute1.FixedValue = ds.Namespace; type.Attributes.Add(attribute1); global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); attribute2.Name = "tableTypeName"; attribute2.FixedValue = "AppointmentsDataTable"; type.Attributes.Add(attribute2); type.Particle = sequence; global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); if (xs.Contains(dsSchema.TargetNamespace)) { global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); try { global::System.Xml.Schema.XmlSchema schema = null; dsSchema.Write(s1); for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext();) { schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); s2.SetLength(0); schema.Write(s2); if ((s1.Length == s2.Length)) { s1.Position = 0; s2.Position = 0; for (; ((s1.Position != s1.Length) && (s1.ReadByte() == s2.ReadByte()));) { ; } if ((s1.Position == s1.Length)) { return(type); } } } } finally { if ((s1 != null)) { s1.Close(); } if ((s2 != null)) { s2.Close(); } } } xs.Add(dsSchema); return(type); }
//f(x,y)=x+y+t /// <summary> /// 替换已知变量,fstr是一个字符串表达式:x+y 不是f=x+y ,没有用了,底层已经能够替换掉它了 /// 没有变量是会原串返回的 /// 里面找未知数时会调用底层 CalString 的函数,里面已经自动排除sin,cos,avg等 函数名了 /// </summary> /// <param name="fstr">含参表达式</param> /// <param name="ps">排除变量</param> /// <returns>返回FuncExpressTemp为替换后的string /// 或含有未知变量返回null</returns> public static string ReplaceParamers(string fstr, string[] ps = null) { string[] strarr = null; FuncString fs = new FuncString(fstr); // fs.SetFuncExpressTemp(fstr); fs.SetFuncExpress(fstr); //为向下兼容不出错 FuncCal fc = new FuncCal(); if (ps == null) { strarr = fs.FindUnKnown(); } else { strarr = fs.FindUnKnown(ps); } fs.SetParamers(strarr); //为向下兼容不出错,不明觉厉 if (strarr.Length != 0) { PushToShow("含有未知数 尝试替换已知变量"); } string[] paramersdata = new string[strarr.Length]; fc.SetFuncString(fs); for (int i = 0; i < strarr.Length; i++) { if (tdc.CheckName(strarr[i])) { CalData datatemp = tdc.GetData(strarr[i]).GetCalData(); switch (datatemp.CalType) { case DataType.BLOCK: { PushToShow("Type not match!"); } break; case DataType.EXP: { ExpData ed = (ExpData)datatemp; paramersdata[i] = ed.GetValueEx(); PushToShow("提取" + strarr[i] + "的值:" + paramersdata[i]); break; } case DataType.MATRIX: { Matrix matrix = (Matrix)datatemp; PushToShow(matrix.ToString()); } break; } // if (datatemp.CalType == DataType.EXP) { // ExpData ed = (ExpData)datatemp; // paramersdata[i] = ed.GetValueEx(); // PushToShow("提取" + strarr[i] + "的值:" + paramersdata[i]); // } // // else // PushToShow("Type not match!"); continue; } PushToShow("未发现变量" + strarr[i] + "还未定义其值\n退出"); return(null); } if (paramersdata.Length != 0) { fc.DealFuncstring(paramersdata); } else { fs.SetFuncExpressTemp(fstr); } return(fc.GetFuncString().GetFuncExpressTemp()); }
// 2*3e void AnalyseInputG(int blacket) { if (blacket == 4) //有括号的 { if (IsOrder()) { // PushToShow("进入命令程序"); Command cm = new Command(); var funs = funstring.GetFuncExpressTemp(); switch (funstring.GetFuncName()) { case "plot": string[] paramers = funstring.GetParamersData(); FuncString funcs = FindFuncInTDC(paramers[0]); double left = 0; double right = 1; try { left = double.Parse(paramers[1]); right = double.Parse(paramers[2]); } catch { if (tdc.CheckName(paramers[1])) { BlockData bd = (BlockData)tdc.GetData(paramers[1]).GetCalData(); if (bd != null) { left = bd.GetXStart(); right = bd.GetXEnd(); } } } if (funcs != null) { new Thread(new ThreadStart(() => cm.PlotFunc(funcs, 6, 1000, left, right))).Start(); // new Thread(new ThreadStart(()=>cm.PlotFuncParallel(funcs, 6, 1000, -10, 10))).Start(); } else { PushToShow("Wrong!"); } break; case "list": #region 处理list bool needJudge = true; DataType dt = DataType.NONE; switch (funs) { case "exp": dt = DataType.EXP; break; case "matrix": dt = DataType.MATRIX; break; case "block": dt = DataType.BLOCK; break; case "func": dt = DataType.FUNC; break; default: needJudge = false; break; } TempData td; for (int i = 1; i < tdc.GetLength(); i++) { td = tdc.GetData(i); bool show = false; if (td != null) { CalData cd = td.GetCalData(); if (cd.CalType == dt) { show = true; } if (!needJudge || show) { PushToShow(td.ToString()); } } } #endregion break; case "beep": int times = 10; int.TryParse(funs, out times); if (times == 0) { times = 10; } for (int i = 0; i < times; i++) { PushToShow("倒计时" + (times - i - 1) + "s"); Console.Beep(1000 * 7, 500); Console.Beep(500, 500); } Console.Beep(30000, 1000); break; case "clc": if (string.IsNullOrEmpty(funs)) { tdc.RemoveAll(); PushToShow("已清空存储数据"); } else { if (tdc.CheckName(funs)) { tdc.Remove(tdc.FindPosition(funs)); PushToShow("clear " + funs); } else { PushToShow("fail to clear.Can't find " + funs); } } break; case "exit": Environment.Exit(0); break; case "clear": Console.Clear(); break; //----------------------这个GetFuncExpressTemp最多返回""不会返回null case "help": cm.Help(funstring.GetFuncExpressTemp()); break; } return; } if (tdc.CheckName(funstring.GetFuncName())) { PushToShow("该函数存在数据中"); if (funstring.GetParamers() != null) { PushToShow("进入函数求值过程"); FuncString funs = FindFuncInTDC(funstring.GetFuncName()); double result = GetFuncResult(funs, new FuncString(InputData).GetParamersData()); PushToShow("结果:" + result); } else { PushToShow("没有输入参数"); } return; // PushToShow("这是啥:" + tdc.GetData(funstring.GetFuncName()).GetValue().ToString()); } { var str = SimpleCal(InputData); if (str == null) { PushToShow("没有此函数"); } else { PushToShow(str.ToString()); } return; } } if (blacket == 1) //没有括号 Name即是计算的表达式 { var Name = funstring.GetFuncName(); CheckDataType(Name); } }
public TempData(string name, CalData value) { this.Name = name; this.Value = value; }