Skip to content

多功能控制台计算器,实现了大数运算、解线性方程组、矩阵运算、算术表达式求值、命题逻辑、进制和编码转换等功能

Notifications You must be signed in to change notification settings

zhb2000/MyCalculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

多功能计算器——大一下C++大作业

一个C++控制台程序,实现了一个多功能的计算器

by 朱华彬、马骁、李政民

(一)实现的功能

1. 大数运算

实现了一个高精度实数类,可以做大数的加法、减法、乘法、除法、阶乘、幂运算、开n次方、取模、比较大小等运算,并重载了相关的运算符。

可以用int型、double型、string型、char*型的参数来初始化一个大数对象。

2. 算术表达式求值

输入一个合法的算术表达式,对该表达式求值,并输出结果。

注意:没有语法检查功能,必须保证输入的数学表达式都是合法的。运算结果可能会溢出。

支持以下运算符:

含义 运算符
相加 +
相减、相反数 -
相乘 *
相除 /
乘方 ^
阶乘 !
括号 ( )

3. 解线性方程组

输入线性方程组的增广矩阵,程序会给出方程组的解。矩阵的元素可以以整数、实数、分数的形式输入,如14, -8.93, -1/16

(1)齐次方程组:若只有零解,则将零解打印出来。若有无穷多解,则打印方程组的一个通解。

(2)非齐次方程组:若无解,则告知用户无解。若有唯一解,则打印唯一解。若有无穷多解,则打印方程组的一个通解。

求解结束后,可以选择输出变换后的行简化阶梯阵。

为了使得矩阵中的元素能够以分数的形式表示,写了一个分数类。

4. 命题逻辑演算

输入一个命题逻辑表达式,程序会给出表达式的真值表、主合取范式、主析取范式。具备语法检查功能,可以检测表达式是否合法。

请使用以下符号输入表达式:

含义 离散数学符号 应当输入的符号
否定 ¬ !
合取 &
析取 |
蕴含 >
等价 ~

命题变元用英文字母表示

5. 矩阵运算

实现了矩阵的加法、减法、乘法、转置、求逆、求行列式等运算。 矩阵的元素可以以整数、实数、分数的形式输入,如:14, -8.93, -1/16

6. 进制和编码转换

进制转换:实现了二进制、八进制、十进制、十六进制数字的相互转换

编码转换:实现了十进制数和BCD码(8421BCD、5421BCD、2421BCD、余三码)的相互转换

注意:没有做输入检查,请确保输入的数字都是合法的

7. 切换配色

可以切换控制台窗口的配色方案,默认配色是白底紫字。

(二)项目文件

头文件

BigNumber.h 高精度实数类
BigNumberCalcu.h 调用大数运算的有关函数
Equation.h 线性方程组
Fraction.h 分数类
LogicalExpression.h 命题逻辑
Matrix.h 矩阵类
NumberTrans.h 进制和编码转换
OtherMode.h 模式切换
Theme.h 配色切换
MathCalculator.h 算术表达式求值

源文件

BigNumber.cpp 高精度实数类
BigNumberCalcu.cpp 调用大数运算的有关函数
Equation.cpp 线性方程组
Fraction.cpp 分数类
LogicalExpression.cpp 命题逻辑
Matrix.cpp 矩阵运算
NumberTrans.h 进制和编码转换
OtherMode.cpp 模式切换
Theme.cpp 配色切换
MathCalculator.h 算术表达式求值
main.cpp 包含main()函数

其他

测试样例文件夹里放的是一些测试样例
exe文件夹里放的是编译出来的可执行文件

(三)分工

  • 朱华彬:大数运算、解线性方程组、命题逻辑演算、配色切换、分数类
  • 李政民:算术表达式求解
  • 马骁:矩阵运算、进制和编码转换

About

多功能控制台计算器,实现了大数运算、解线性方程组、矩阵运算、算术表达式求值、命题逻辑、进制和编码转换等功能

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published