Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MiniCalc

一个零依赖、跨平台的 C++ 计算器,使用现代 C++(C++17)编写。

  • TUI(终端界面):在终端中运行时默认进入,全屏计算器,边输入边实时显示结果,就像 Windows 计算器一样。
  • CLI(命令行):交互式 REPL,另有单行求值模式与管道/批量模式。

功能特性

  • 运算符:+ - * / % ^ 以及括号 ( )
  • 隐式乘法:2(3+4)2pi2sqrt(3)
  • 标准运算符优先级,^ 为右结合(2^3^2 = 512),-2^2 = -4
  • 函数:sin cos tan asin acos atan sinh cosh tanh sqrt cbrt exp ln log log10 log2 abs floor ceil round trunc sign pow min max mod atan2 hypot
  • 整数 / 组合数学:gcd lcm fact ncr npr
  • 开方与取模:root(n, x)(x 的 n 次方根)、pmod(a, b)(结果恒非负的取模)
  • 乘方:^(例如 2^10),右结合且支持负号指数(2^-3
  • 分组:括号 ( ),并支持隐式乘法(2(3+4)2pi
  • 常量:pi e tau phi,以及 ans(上一次的计算结果)

TUI 虚拟键盘

TUI 会绘制一排可点击的计算器按键(数字、运算符、( )^gcdrootpi=、退格、清空)。你可以用鼠标点击按钮,也可以直接打字。 鼠标输入在 Unix/macOS 终端使用 SGR 协议,在 Windows 上使用 ReadConsoleInput, 因此在 Windows 控制台 / Windows Terminal 中点击同样有效。

  • 实时预览:当表达式只输入了一半或语法不完整时,结果显示为 = ... 而不是报错, 只有当表达式合法时才会“锁定”显示结果。

编译

无需任何外部依赖库。

Linux / macOS

cd calc
cmake -S . -B build
cmake --build build
# 或者更简单,直接用 g++:
g++ -std=c++17 -O2 src/*.cpp -o calc

Windows

使用 Visual Studio(MSVC)+ CMake:

cd calc
cmake -S . -B build
cmake --build build --config Release

使用 MinGW-w64:

g++ -std=c++17 -O2 src/*.cpp -o calc.exe

TUI 使用 ANSI 转义码;Windows 10 及以上控制台原生支持,旧版 Windows 也能运行, 但可能不显示颜色。

从 Linux/macOS 交叉编译 Windows 版本

安装 mingw-w64,然后直接编译或使用辅助脚本:

# 直接编译
x86_64-w64-mingw32-g++ -std=c++17 -O2 -static src/*.cpp -o calc-x64.exe
i686-w64-mingw32-g++   -std=c++17 -O2 -static src/*.cpp -o calc-x86.exe

# 或使用辅助脚本
./build-win.sh

-static 参数会把 C++ 运行时静态链接进 exe,因此生成的 .exe 仅依赖系统自带的 KERNEL32.dll / msvcrt.dll,无需额外携带 DLL。

使用方式

# TUI(交互式,实时结果)——在终端中运行时默认进入
./calc

# 强制指定模式
./calc --tui
./calc --cli

# 求值并退出(单行模式)
./calc --expr "2 + 3 * 4"
./calc "sqrt(2) ^ 2"

# 从文件 / 管道批量计算
./calc < expressions.txt
echo "1+1" | ./calc

TUI 按键说明

按键 功能
可打印字符 在光标处插入
/ Home End 移动光标
Backspace / Delete 删除字符
翻阅历史记录
Enter 用结果替换当前表达式(可继续链式计算)
Esc / Ctrl-C 退出

CLI

> 提示符后输入表达式。help 查看功能说明,exit 退出。 变量 ans 始终保存上一次的计算结果。

中文显示说明

程序以 UTF-8 输出中文界面与报错信息。

  • Linux / macOS:终端默认即为 UTF-8,无需额外设置。
  • Windows:程序启动时会自动将控制台代码页切换为 UTF-8(65001),退出时还原; 若仍有乱码,请将控制台字体改为 TrueType 字体(如 Consolas / Microsoft YaHei Mono), 或使用 Windows Terminal / PowerShell。
  • 函数名、常量名(sinpi 等)与运算符仍使用英文,这是表达式语法的通用做法。

发布(Releases)

编译好的可执行文件(Windows 64/32 位 .exe 与 Linux 可执行文件)发布在 Releases 页面,仓库本身只存放源码。

About

Cross-platform C++ calculator: CLI + live-result TUI (parentheses, power, gcd, root, etc.)

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages