public void finalQuery() { AAFinalScore Final = new AAFinalScore(); List <String> resultLaTeXList = new List <string>(); StreamReader sr = new StreamReader("C:\\Users\\Administrator\\Desktop\\最终版组合测试添加数据用来修改的\\最终版组合测试添加数据用来修改的\\14最终版组合测试模糊匹配有点毛病啊,已解决14\\第二个实验测试数据\\1.txt", Encoding.Default); String read = sr.ReadLine(); FuShu fushu = new FuShu(); DuiShu duishu = new DuiShu(); while (true) { Console.WriteLine("请输入您的查询请求:包含分数为:"); double baoHan = Convert.ToDouble(Console.ReadLine()); // Console.WriteLine("请输入您的查询请求:结构分数为:"); //double jieGou = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("请输入您想要查的字符串:(#为结束字符)"); String queryLaTeX = Console.ReadLine(); //如果是负数的话 queryLaTeX = fushu.fuShu(queryLaTeX); queryLaTeX = duishu.duiShu(queryLaTeX); //如果时负数的话 //下面这个是相当于读取子式的那个 AARead ar = new AARead(); resultLaTeXList = ar.Read(queryLaTeX); resultLaTeXList = resultLaTeXList.Distinct().ToList(); System.Diagnostics.Stopwatch stop = new System.Diagnostics.Stopwatch(); stop.Start(); //开始监视代码运行时间 Final.FinalScore(queryLaTeX, resultLaTeXList, baoHan /*, jieGou*/); stop.Stop(); //代码结束时间 TimeSpan timespan = stop.Elapsed; double milliseconds = timespan.TotalMilliseconds; //总毫秒 Console.WriteLine("排序时间为:" + milliseconds + "毫秒"); } }
public List <FinalNode1> AdjacentNodeList(String LaTeX) { AdjacentNode adjacentNodes = new AdjacentNode(); List <FinalNode1> AdjacentNodeList = new List <FinalNode1>();//存放邻接节点有序对的集合 LimAndSum limandSums = new LimAndSum(); DuiJiaoXian duijiaoxian = new DuiJiaoXian(); NciGenHao nicigenHao = new NciGenHao(); DuiShu duishu = new DuiShu(); int biaozhi; String final; String cao; char[] caos; FuShu fushu = new FuShu(); biaozhi = 1; //每次循环前设置一个标志令标志等于1 final = ""; //每次令final为空字符串,用来接收“特殊lim和sum表达式”还是“一般表达式” cao = LaTeX.ToString().Trim(); //把数据库的数学表达式读出来,要开始判断了啊 caos = cao.ToCharArray(); for (int i = 0; i < caos.Length; i++) { if (Convert.ToString(caos[i]).Equals("\\") && Convert.ToString(caos[i + 1]).Equals("l") && Convert.ToString(caos[i + 2]).Equals("i") && Convert.ToString(caos[i + 3]).Equals("m")) { biaozhi = 0; break; } else if (Convert.ToString(caos[i]).Equals("\\") && Convert.ToString(caos[i + 1]).Equals("s") && Convert.ToString(caos[i + 2]).Equals("u") && Convert.ToString(caos[i + 3]).Equals("m")) { biaozhi = 0; break; } } if (biaozhi == 0)//说明有lim这种的 { final = limandSums.limAndSum(cao); final = fushu.fuShu(final); final = nicigenHao.NcigenHao(final); final = duishu.duiShu(final); } else { //下面这个是普通的和负号的 final = fushu.fuShu(cao); final = nicigenHao.NcigenHao(final); final = duishu.duiShu(final); } //================================对于遇到含有lim和sum等特殊表达式的需要一段代码来特殊处理,如果不是这类表达式,那就不用处理,不过还有一些负号这类的=========================================== AdjacentNodeList = adjacentNodes.AdjacentNodeList(final); return(AdjacentNodeList); }
//这个方法是把数据写入txt文件,到时候写入SQLServer里面,因为我现在没有内存下载数据库了 public void Write() { //先测试一下 //StreamReader sr = new StreamReader("C:\\Users\\Administrator\\Desktop\\最终版组合测试添加数据用来修改的\\最终版组合测试添加数据用来修改的\\测试建索引\\1.txt", Encoding.Default); //StreamWriter sw = new StreamWriter("C:\\Users\\Administrator\\Desktop\\最终版组合测试添加数据用来修改的\\最终版组合测试添加数据用来修改的\\测试建索引\\2.txt"); //第一步:先把txt所有数学公式读入内存 StreamReader sr = new StreamReader("C:\\Users\\Administrator\\Desktop\\最终版组合测试添加数据用来修改的\\最终版组合测试添加数据用来修改的\\14最终版组合测试模糊匹配有点毛病啊,已解决14\\第二个实验测试数据\\1.txt", Encoding.Default); StreamWriter sw = new StreamWriter("C:\\Users\\Administrator\\Desktop\\第二篇论文实验读写数据库\\2.txt"); List <AAIndex> indexList = new List <AAIndex>(); DuiShu duishu = new DuiShu(); FuShu fuShu = new FuShu(); String read = sr.ReadLine(); read = duishu.duiShu(read); read = fuShu.fuShu(read); int a = 0; while (read != null) { //if (a == 100) //{ // break; //} //a++; //先读每一个数学公式,然后把每一个数学公式的子式、子式结构和该数学公式提取出即可 //Console.WriteLine(read); Dictionary <int, List <FinalNode1> > children = new Dictionary <int, List <FinalNode1> >(); ChildrenBTree childrenBTree = new ChildrenBTree(); children = childrenBTree.childrenBTree(read); //这个是获取一个LaTeX的每一个子式 foreach (var it in children) { //定义每一个子式 String zishi = ""; //定义每一个子式结构 String zishiStructure = ""; foreach (var itt in it.Value) { zishi = zishi + itt.zifu; if (isSpecialYunSuanShu(itt.zifu)) { } else { zishiStructure = zishiStructure + itt.zifu; } } //Console.WriteLine("子式:" + zishi); AAIndex index = new AAIndex(); index.zishi = zishi; index.zishiStructure = zishiStructure; index.LaTeX = read; indexList.Add(index); } read = sr.ReadLine(); if (read == null) { break; } read = duishu.duiShu(read); read = fuShu.fuShu(read); } //Console.WriteLine("哪出bug了:==============="); //开始写了 foreach (var it in indexList) { if (it.zishiStructure.Equals("")) { sw.WriteLine(it.zishi + "#" + " " + "#" + it.LaTeX + "#" + it.xuhao); } else { sw.WriteLine(it.zishi + "#" + it.zishiStructure + "#" + it.LaTeX + "#" + it.xuhao); } } sw.Flush(); }
public void WriteData() { //第一步:先把txt所有数学公式读入内存 StreamReader sr = new StreamReader("C:\\Users\\Administrator\\Desktop\\最终版组合测试添加数据用来修改的\\最终版组合测试添加数据用来修改的\\14最终版组合测试模糊匹配有点毛病啊,已解决14\\第二个实验测试数据\\1.txt", Encoding.Default); StreamWriter sw = new StreamWriter("C:\\Users\\Administrator\\Desktop\\最终版组合测试添加数据用来修改的\\最终版组合测试添加数据用来修改的\\14最终版组合测试模糊匹配有点毛病啊,已解决14\\第二个实验测试数据\\2.txt"); List <AAIndex> indexList = new List <AAIndex>(); DuiShu duishu = new DuiShu(); FuShu fuShu = new FuShu(); String read = sr.ReadLine(); read = duishu.duiShu(read); read = fuShu.fuShu(read); int a = 0; while (read != null) { //if (a == 1) //{ // break; //} //a++; List <FinalNode1> AdjacentNodeList = new List <FinalNode1>(); AdjacentNode ad = new AdjacentNode(); AdjacentNodeList = ad.AdjacentNodeList(read); String str = null; //这个是每一个字符串 //现在这个是中序遍历好的节点 List <String> ji = new List <string>(); foreach (var it in AdjacentNodeList) { //第一:如果左右节点都为操作数 if (isOperator(it.zifu) && it.left != null && it.right != null && !isOperator(it.left.zifu) && !isOperator(it.right.zifu)) { List <FinalNode1> nodeList = new List <FinalNode1>(); middleBianLi zhongxu = new middleBianLi(nodeList, it); String strr = null; foreach (var itt in nodeList) { strr = strr + itt.zifu; //Console.WriteLine("链接为:"+itt.zifu); } //foreach (var itt in nodeList) //{ // if (isOperator(itt.zifu)) // { // strr = strr + itt.BTreeLevel; // } //} ji.Add(strr); } //第二:如果左节点是操作数,右节点是操作符 if (isOperator(it.zifu) && it.left != null && it.right != null && !isOperator(it.left.zifu) && isOperator(it.right.zifu)) { ji.Add(it.left.zifu /*+ it.left.BTreeLevel*/); ji.Add(it.zifu /*+it.BTreeLevel*/); } //第三:如果左节点是操作符,右节点是操作数 if (isOperator(it.zifu) && it.left != null && it.right != null && isOperator(it.left.zifu) && !isOperator(it.right.zifu)) { ji.Add(it.zifu /*+ it.BTreeLevel*/); ji.Add(it.right.zifu /*+ it.right.BTreeLevel*/); } //第四:如果左右节点都是操作符 if (isOperator(it.zifu) && it.left != null && it.right != null && isOperator(it.left.zifu) && isOperator(it.right.zifu)) { ji.Add(it.zifu /*+ it.BTreeLevel*/); } //第五:类似sina if (isOperator(it.zifu) && it.left != null && it.right == null && !isOperator(it.left.zifu)) { ji.Add(it.left.zifu + it.zifu); } //第六:类似sin(a+b) if (isOperator(it.zifu) && it.left != null && it.right == null && isOperator(it.left.zifu)) { ji.Add(it.zifu /*+ it.BTreeLevel*/); } //if (isOperator(it.zifu) && it.left!=null && it.right != null && !isOperator(it.left.zifu) && !isOperator(it.right.zifu)) //{ // //如果该字符是运算符且左右节点都是运算数,说明它是个子树 // //把中序遍历好的每一个节点存入集合当中 // //Console.WriteLine("哈哈哈:"+it.zifu); // List<FinalNode1> nodeList = new List<FinalNode1>(); // middleBianLi zhongxu = new middleBianLi(nodeList, it); // String strr = null; // foreach (var itt in nodeList) // { // strr = strr + itt.zifu; // //Console.WriteLine("链接为:"+itt.zifu); // } // foreach (var itt in nodeList) // { // if (isOperator(itt.zifu)) // { // strr = strr + itt.BTreeLevel; // } // } // ji.Add(strr); //} //else if (it.left != null && it.right != null && isOperator(it.left.zifu) && !isOperator(it.right.zifu)) //{ // ji.Add(it.zifu+it.BTreeLevel); // ji.Add(it.right.zifu+it.right.BTreeLevel); //} //else if (it.left != null && it.right != null && !isOperator(it.left.zifu) && isOperator(it.right.zifu)) //{ // ji.Add(it.left.zifu+ it.left.BTreeLevel); // ji.Add(it.zifu+it.BTreeLevel); //} } foreach (var itt in ji) { str = str + itt + "#"; } str = str + read; sw.WriteLine(str); //Console.WriteLine("草泥马了:" + str); //Console.WriteLine("=============================="); read = sr.ReadLine(); if (read == null) { break; } read = duishu.duiShu(read); read = fuShu.fuShu(read); } //Console.WriteLine("哪出bug了:==============="); //开始写了 //foreach (var it in indexList) //{ // if (it.zishiStructure.Equals("")) // { // sw.WriteLine(it.zishi + "#" + " " + "#" + it.LaTeX + "#" + it.xuhao); // } // else // sw.WriteLine(it.zishi + "#" + it.zishiStructure + "#" + it.LaTeX + "#" + it.xuhao); //} sw.Flush(); }