⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calc_test_2.cpp

📁 这是一个对数学表达式求值的C++ class
💻 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 + -