An open API service indexing awesome lists of open source software.

https://github.com/zhb2000/mycalculator

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

cpp

Last synced: 8 months ago
JSON representation

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

Awesome Lists containing this project

README

          

# 多功能计算器——大一下C++大作业
一个C++控制台程序,实现了一个多功能的计算器

by 朱华彬、马骁、李政民

* [(一)实现的功能](#jump1)
+ [1. 大数运算](#jump1-1)
+ [2. 算术表达式求值](#jump1-2)
+ [3. 解线性方程组](#jump1-3)
+ [4. 命题逻辑演算](#jump1-4)
+ [5. 矩阵运算](#jump1-5)
+ [6. 进制和编码转换](#jump1-6)
+ [7. 切换配色](#jump1-7)
* [(二)项目文件](#jump2)
+ [头文件](#jump2-1)
+ [源文件](#jump2-2)
+ [其他](#jump2-3)
* [(三)分工](#jump3)

## (一)实现的功能
### 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文件夹里放的是编译出来的可执行文件
```

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