📄 calc_test_2.cpp
字号:
#include "calculator.h"
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <iomanip.h>
void main()
{
Calculator calc;
cout << "Input a expression: "<<endl;
char buf[1000];
cin.getline(buf, sizeof(buf));
if(!calc.Input(buf)) {//buf为以'\0'结尾的字符串,表达式存储在其中
//发生异常则返回false
cout << "ERROR : "
<< calc.GetErrorMessage(calc.GetErrorID()) //获取所发生的异常的内容
<< "\nNear Line "<< calc.GetErrorLineNo() //获取所发生的异常的行号
<<endl;
//return 1;
}
int nv = calc.GetNumberOfVariables(); //得到表达式中的自变量个数
if (nv > 0) {
cout << "\nThere seems to be " << nv <<
" Variable(s) in your expression, please input them :" << endl;
const char *varname;
double varsfrom[MaxNumber_of_Variable], var;
for(int i = 0; i < nv; i++) {
varname = calc.GetVariableName(i); //得到表达式第I个自变量的名字
cout << "No." << i + 1 << " " << varname << " = ";
cin >> var;
varsfrom[i] = var; //用户输入自变量的值
}
calc.Assign(varsfrom); //将用户输入的自变量的值传递给计算器,请参考源代码理解
}
if(!calc.Compute()) { //执行计算,错误则返回false
int errid, errlineno;
const char *errmsg;
errid = calc.GetErrorID();
errmsg = calc.GetErrorMessage(errid);
errlineno = calc.GetErrorLineNo();
cout << endl << "ERROR : " << errmsg << "\nNear Line "<< errlineno << endl;
// return 1;
}
double result = calc.GetResult(); //计算取得结果
cout << "Answer: " << result << endl;
calc.Clear(); //初始化计算器,以备下次使用
//以下例子详细介绍Calculator::Assign()
strcpy(buf, "30*sin(x)+40");
assert(calc.Input(buf));
assert(calc.GetNumberOfVariables()==1);
const double PI = 3.1415926535879;
double vars[1];
for(double r = 0; r <= 2*PI+.1; r += PI / 10) {
vars[0] = r;
calc.Assign(vars); //多次对自变量赋值
//在只有一个自变量的情况下,可以写作calc.Assign(&r);
assert(calc.Compute()); //多次计算
int w =int( calc.GetResult());
cout << setw(w) << "*\n"; //显示图形
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -