The Great Assignment of 《Data Structure》from Chapter1 to Chapter5. To tell you more, read this instruction manual below.
用户在运行程序后,看到如下显示:
然后在终端输入"A","B","C","D","E","F"中的一个,注意需要为【大写】,然后直接按下回车键。
如上图可知,该计算器实现6种计算模式,实现了5种计算要求。
- A:表达式计算
- B:编程计算
- C:编程矩阵运算
- D:向量的相关运算
- E:用顺序表实现多项式的相关计算
- F:用链表实现多项式的相关计算
其中,E和F属于同一计算要求,是《数据结构》课程中对两种结构:线性表和链表 的练习和实现。用户可以通过两种结构的实现互相印证,也可以帮我检查一下有没有什么隐藏的bug XD。
用户直接输入需要求取的表达式,然后按下回车即可计算答案。
- 四则运算表达式求值,操作符包括加('+')、减('-')、乘('*')、除('/')、左右括号,而操作数则包括整数和浮点数等C/C++支持的不同类型的数值。
- 含单变量表达式的求值,用户设置形如$x,y,x_1,x_2,u,v$等变量。
- 含多变量表达式的求值,用户可以在一个表达式中输入不同变量的值,按照变量第一次出现的顺序输入。
- 相同的且重复出现的变量只需要输入一次。
输入示例:
请输入表达式:
(5+4)*3/2+1
结果为:14.5
请输入表达式:
x/2+x*3
请输入变量的值:
1
结果为:3.5
请输入表达式:
(5+x1)*x2/x3+1
请输入变量的值:
4.9
请输入变量的值:
2
请输入变量的值:
3
结果为:7.6
注意:
- 表达式中,【不需要】也【无法】加空格,在输入时请注意,会报错(当然因此会简化算法的复杂醒,精力有限hhh)。
- 表达式不易过长,会有长度限制,(但目前暂时未知最长是多少)。
这是一个由用户自定义函数和运行的模式,现将相关指令和注意事项约定如下:
-
【DEF】方法
-
定义一个函数,格式为
DEF f(x)
; -
DEF f(x)=x+1
-
-
【RUN】方法
-
运行一个函数,格式为
RUN f(1)
; -
RUN f(1)
-
-
【END】方法
- 结束编程计算环境。直接输入
END
,按下回车键即可退出程序。
- 结束编程计算环境。直接输入
-
- 函数的次方。格式为
DEF g(x)=f(x)^2
;
- 函数的次方。格式为
-
保留了历史函数,可以运行历史函数。
-
函数的调用。已经定义了$f(x)$,$g(x)$中可以重复调用。
输入示例:
DEF f(x)=x+1
你定义了第1个多项式:f(x)=x+1
DEF g(x)=3+4*f(x)
你定义了第2个多项式:g(x)=3+4*(x+1)
RUN g(2.5)
结果为:17
DEF f(x)=x+1
你定义了第1个多项式:f(x)=x+1
DEF g(x)=f(x)^2
你定义了第2个多项式:g(x)=(x+1)*(x+1)
这是一个由用户自定义函数和运行的模式,现将相关指令和注意事项约定如下:
-
【DEF】方法
- 定义一个矩阵,格式为
DEF m1
- 按下回车之后将输入【行数】和【列数】,格式为
row col
,row和col为输入的行和列 - 按下回车后将输入矩阵的值,依次输入,输够后按下回车。
- 然后将显示矩阵的名字和值。
- 定义一个矩阵,格式为
-
【**print **】方法
- 显示已经定义的矩阵,格式为
print m1
;
- 显示已经定义的矩阵,格式为
-
【DET】方法
- 求矩阵的行列式,格式为
DET m1
;
- 求矩阵的行列式,格式为
-
【EIG】方法
- 求矩阵的特征值,格式为
EIG m1
; - 该方法同时还调用了多个函数,如【DET】方法和判断是否为非奇异矩阵,并且用到了QR分解迭代方法求取矩阵特征值,精度为$1e-5$级别。
- 求矩阵的特征值,格式为
-
矩阵基本运算方法
- 支持➕,➖,✖️,数乘方法。
m1+m2
m1*m2
1.5*m1
-
【END】方法
- 使用方法同上。
输入示例: