void File_Operate::Fileoperate() { Scan Sc; Print Put; Calculation Ca; ifstream infile; ofstream outfile; //打开文件 infile.open(getsfile.c_str(),ios::in); outfile.open(putsfile.c_str(),ios::out); string get_str; while(!infile.eof()) //未处理到文件尾 { getline(infile,get_str); //读入数据 queue<string> que; que = Sc.ToStringQueue(get_str); double result=0; result = Ca.carryout(que); outfile << result << endl; } //关闭文件 infile.close(); outfile.close(); }
int main(int argc, char* argv[]) { string input; //接收键盘输入的表达式 Scan sc; Print pr; Calculation cal; queue<string> q; string res; if (argc == 2) { input = argv[1]; q = sc.toStringQueue(input); sc.clearQue(); pr.print(pr.getInfomation(sc.getFlag(), cal.getResult(q))); } else if (argc == 3 && strcmp(argv[1], "-a") == 0) { input = argv[argc - 1]; q = sc.toStringQueue(input); pr.printQue(q); sc.clearQue(); pr.print(pr.getInfomation(sc.getFlag(), cal.getResult(q))); } else if (argc == 4 && strcmp(argv[1], "-f") == 0) { sc.read(argv[2], argv[3]); } return 0; }
int main(int argc, char* argv[]) { bool flag = false; stack <double>result; string character; queue<string>que_character; Scan INPUT; //Print OUTPUT; Calculation CAL; Calculation RES; character = argv[1]; if(character == "-a") { character = argv[2]; flag = true; } if(flag) { cout << character << "="; } que_character = INPUT.ToStringQueue (character); result = CAL.Separate (que_character); RES.CoutResult(result); //OUTPUT.print(que_character); return 0; }
int main(int argc, char* argv[]) { Scan in; Calculation cal; string input; //将传入表达式赋给input if(strcmp(argv[1], "-a") == 0) { cout << argv[2] << "= "; input = argv[2]; } else { input = argv[1]; } //首先判断输入字符串中数字串长度不超过10位 if (!in.checkNumberLen(input)) { return 0; } cal.getQueue(in.ToStringQueue(input)); return 0; }
//以文件方式输出结果 void Print::ToPrintIs_f(string sText_txt, string sResult_txt) { ifstream in; ofstream out; //打开文件 in.open(sText_txt.c_str(), ios::in); out.open(sResult_txt.c_str(), ios::out); while (!in.eof()) { Scan scan; Calculation calculate; string sExperssion; //从sText_txt路径获取数据 getline(in, sExperssion, '\n'); //拆分表达式 scan.ToStringQueue(sExperssion); //计算表达式的值 calculate.ToCalculate(scan.q); //在sResult_txt路径下输出结果 out << calculate.m_dResult << endl; } //关闭文件 in.close(); out.close(); }
int main(int argc, char* argv[]) //用cmd传参的方法输入数据 { if (strcmp(argv[1],"-f") == 0) //"-f" 用文件输入输出 { freopen(argv[2],"r",stdin); freopen(argv[3],"w",stdout); string str; while (cin >> str) { /*定义在循环内,缩小变量作用域,代替每次的初始化,避免造成多次输出留下问题 */ Scan get_scanf; Print put_printf; get_scanf.ToStringQueue(str); CheckInput *ck = new CheckInput; get_scanf.ErrorType += ck->CheckIfCorrect(get_scanf.que); //存入输入错误类型 if (get_scanf.ErrorType == "") //判断输入是否合法,无错误类型则合法 { Calculation *cal = new Calculation; cal->Calculate(get_scanf.que); //计算 put_printf.PrResult(cal->result); delete cal; } else { put_printf.PrErTpye(get_scanf.ErrorType); //输出计算结果 } str = ""; delete ck; } }
Verify::Verify() { District_number = 0; Count = 0; Calculation cal; Permutation_number = cal.factorial(Degree); for (int i = 1; i <= Degree; i++) { Permutation_sequence.push_back(i); } }
vector<int> Verify::retrieve_permutation(const string& str) { string strng; Calculation cal; Utility util; unsigned int index = str.length() - 2; int size = table_list.tables[index].size(); for(int i = 0; i < size; i++) { strng = table_list.tables[index][i]; if(cal.find_str(strng, str)) { return util.string2permutation(cal.extract_powvs_string(strng, str.length())); } } cout << "*** Cannot find the permutation: " << str << endl; exit(-1); }
//以非文件方式输出结果 void Print::ToPrintIsNot_f(string sInput, bool bIs_a) { Scan scan; Calculation calculate; //拆分表达式 scan.ToStringQueue(sInput); //计算表达式的值 calculate.ToCalculate(scan.q); if (bIs_a) { cout << sInput << "= "; } cout << calculate.m_dResult << endl; }
int main(int argc, char* argv[]) { string input; string output; int temp = 0;//判断是否有“-a” int i; Scan sca; Calculation calcul; for (i = 1; i < argc; i++) { input = argv[i]; if (input == "-a") { temp = 1; continue; } } sca.ToStringQueue(input); queue<string>*q = sca.GetQueue();//定义队列指针接收队列 //如果数字符合要求才运算 if (sca.m_ijudge == 0) { if (temp == 1) { cout << input << "= "; } calcul.trans(q); double result = calcul.count(); cout << result << endl; } else { return 0; } system("pause"); return 0; }
int main(int argc , char *argv[]) { Scan scan; //Print print; Calculation calculation; string input; //cin >> input; /*根据argc的值对input赋值*/ if(argc == 2) { input = argv[1]; } else { input = argv[2]; } scan.ToStringQueue (input); /*将input传入Scan进行处理*/ calculation.GetQueue(scan.ReturnQueue()); /*将处理后的queue传入Calculation*/ calculation.Change(scan.ReturnQueue()); /*将传入的queue进行后缀转化*/ //calculation.Ans(); /*根据argc的值进行不同输出*/ if(argc == 2) { calculation.Ans(); } else { cout << argv[2] << "= "; calculation.Ans(); } //if(scan.IsError() == false) // print.print(scan.ReturnQueue()); //else //cout << "超过十位啦!"; return 0; }
int main(int argc, char** argv) { string input; string parameter; double result; queue<string> seperatedExpression; Scan scan; Calculation cal; Print print; parameter = argv[1]; cout << setprecision(precision); if (parameter == "-a") //输入参数为 -a 的情况,输出表达式 { input = argv[2]; seperatedExpression = scan.ToStringQueue(input); if (seperatedExpression.front() == "ERROR") //若返回字符串为 ERROR 则报错并退出循环 { print.PrintLengthError(); return 0; } result = cal.Calculate(seperatedExpression); print.PrintA(input,result); } else if (parameter == "-f") //输入参数为 -f 的情况,对文件进行读写 { if (scan.Open(argv[2]) && print.Open(argv[3])) { while (!scan.IsEOF()) //循环读入每行,计算和写入文件 { result = 0; while(!seperatedExpression.empty()) { seperatedExpression.pop(); } scan.Read(); if (scan.GetInput() == "") { continue; } seperatedExpression = scan.ToStringQueue(scan.GetInput()); if (seperatedExpression.front() == "ERROR") { print.PrintLengthError(); continue; } result = cal.Calculate(seperatedExpression); print.PrintF(result); } scan.Close(); print.Close(); } else { cout << "Open file failed."; return 0; } } else //无参数情况 { input = argv[1]; seperatedExpression = scan.ToStringQueue(input); if (seperatedExpression.front() == "ERROR") { print.PrintLengthError(); return 0; } result = cal.Calculate(seperatedExpression); print.DefaultPrint(result); } return 0; }
int main() { bool Exit = false; while (Exit == false){ Move a; Move b; string User1; int num1; string User2; int num2; int counter=1; bool LinCom=false; vector <int> Played; int WhoMove=1; int Lim; EuclideanAlgorithm tester; User1 = a.User_Input(WhoMove); num1 = a.Num_Played(User1); Played.push_back(num1); WhoMove++; User2 = b.User_Input(WhoMove); num2 = b.Num_Played(User2); Played.push_back(num2); WhoMove++; Calculation calc1; if (tester.GCD(num1, num2) == 1){ Lim=calc1.Limit(Played); }else{ cout << "Why would you start off the game with two numbers that are not relatively \ncoprime? I'll set the limit to 300 just to be nice ;)" << endl; Lim=300; Played.push_back(200); } cout << "All numbers greater than " << Lim << " have been eliminated." << endl << endl; vector <int> Legal = calc1.Legal(Played, Lim); cout << "Remaining numbers: "; for (vector<int>::iterator it = Legal.begin(); it != Legal.end(); ++it) { if (it==Legal.end()-1){ cout << ' ' << *it << "." << endl; }else{ cout << ' ' << *it << ", "; } } /*cout << "THIS IS A TEST" << endl; vector <int> F; F.push_back(15); F.push_back(11); F.push_back(8); vector <int> E = calc.Legal(F, 80); cout << "Remaining numbers: "; for (vector<int>::iterator it3 = E.begin(); it3 != E.end(); ++it3) { if (it3==E.end()-1){ cout << ' ' << *it3 << "." << " Size of "<< E.size() << endl; }else{ cout << ' ' << *it3 << ", "; } }*/ cout << "Played Numbers:\t"; for (vector<int>::iterator it3 = Played.begin(); it3 != Played.end(); ++it3) { if (it3==Played.end()-1){ cout << ' ' << *it3 << "." << endl; }else{ cout << ' ' << *it3 << ", "; } } cout << endl; if (calc1.Game_Over(Legal, WhoMove)==true){ cout << "Play again? (Y or N)" << endl; string Playing1; cin >> Playing1; if (Playing1 == "N"){ Exit = true; } } vector <int> TLegal = Legal; Calculation calc; while (calc.Game_Over(TLegal, WhoMove)==false){ User1 = a.User_Input(WhoMove); num1 = a.Num_Played(User1); if (calc.MoveLegal(TLegal, num1)==true){ Played.push_back(num1); double Lim=calc.Limit(Played); cout << "All numbers greater than " << Lim << " have been eliminated." << endl; cout << endl; TLegal = calc.Legal(Played, Lim); cout << "Remaining numbers: "; for (vector<int>::iterator it = TLegal.begin(); it != TLegal.end(); ++it) { if (it==TLegal.end()-1){ cout << ' ' << *it << "." << endl; }else{ cout << ' ' << *it << ", "; } } cout << "Played Numbers:\t"; for (vector<int>::iterator it3 = Played.begin(); it3 != Played.end(); ++it3) { if (it3==Played.end()-1){ cout << ' ' << *it3 << "." << endl; }else{ cout << ' ' << *it3 << ", "; } } WhoMove++; if (calc.Game_Over(TLegal, WhoMove)==true){ cout << "Play again? (Y or N)" << endl; string Playing; cin >> Playing; if (Playing == "N"){ Exit = true; } } // }else{ // cout << "Illegal move: Try again " << endl; //} }else{
bool ModelValidator::isValid(const Calculation& calculation, bool allowDefaults/* = false*/) { RETURN_IF_UID_NOT_VALID(calculation.GetUID(), "Calculation UID"); RETURN_IF_STR_EMPTY(calculation.GetDescription(), "Calculation Description"); RETURN_IF_STR_EMPTY(calculation.GetCodeValue(), "Calculation Code Value"); RETURN_IF_STR_EMPTY(calculation.GetCodeMeaning(), "Calculation Code Meaning"); RETURN_IF_STR_EMPTY(calculation.GetCodingSchemeDesignator(), "Calculation Coding Scheme Designator"); for (CalcResultVector::const_iterator iter = calculation.GetCalculationResultCollection().begin(); iter < calculation.GetCalculationResultCollection().end(); iter++) RETURN_IF_NOT_VALID1(*iter, allowDefaults, "Calculation Result is invalid"); for (ReferencedCalcVector::const_iterator iter = calculation.GetReferencedCalculationCollection().begin(); iter < calculation.GetReferencedCalculationCollection().end(); iter++) RETURN_IF_NOT_VALID1(*iter, allowDefaults, "Referenced Calculation is invalid"); for (ReferencedGeometricShapeVector::const_iterator iter = calculation.GetReferencedGeometricShapeCollection().begin(); iter < calculation.GetReferencedGeometricShapeCollection().end(); iter++) RETURN_IF_NOT_VALID1(*iter, allowDefaults, "Referenced Geometric Shape is invalid"); if (!allowDefaults) { RETURN_IF_STR_EMPTY(calculation.GetCodingSchemeVersion(), "Calculation Coding Scheme Version"); RETURN_IF_STR_EMPTY(calculation.GetMathML(), "MathML"); RETURN_IF_STR_EMPTY(calculation.GetAlgorithmName(), "AlgorithmName"); RETURN_IF_STR_EMPTY(calculation.GetAlgorithmVersion(), "AlgorithmVersion"); } return true; }