c++代码_函数表达式投影在坐标系上 这个代码是把四则运算的函数投影在坐标系上的如yx-1它输出绘制函数: yx-1 x的范围: -15 到 15 y的范围: -15 到 15 网格中心 (15,15) 对应坐标 (0,0) x-15, y-16 x-14, y-15 x-13, y-14 x-12, y-13 x-11, y-12 x-10, y-11 x-9, y-10 x-8, y-9 x-7, y-8 x-6, y-7 x-5, y-6 x-4, y-5 x-3, y-4 x-2, y-3 x-1, y-2 x0, y-1 x1, y0 x2, y1 x3, y2 x4, y3 x5, y4 x6, y5 x7, y6 x8, y7 x9, y8 x10, y9 x11, y10 x12, y11 x13, y12 x14, y13 x15, y14 | | | # | # | # | # | # | # | # | # | # | # | # | # - - - - - - - - - - - - - - - - # - - - - - - - - - - - - | # | # # # | # | # | # | # | # | # | # | # | # | # | # |等等这是一个基于控制台的数学函数图像绘制工具它能够接收用户输入的数学表达式包含变量 x在 30×30 的网格上绘制函数 y f(x) 的图像显示坐标轴和网格1. 表达式计算程序实现了中缀表达式转后缀表达式的算法支持四则运算-*/括号( )负数处理变量x的替换工作流程text用户输入: x1 ↓ 替换 x 为具体数值: 51 ↓ 中缀转后缀: 5 1 ↓ 计算后缀表达式: 62. 坐标映射网格大小30×30行×列列x轴1-30对应数学坐标 -15 到 15行y轴1-30对应数学坐标 15 到 -15翻转网格显示说明网格中的符号含义原点 (0,0)-x轴第15行|y轴第15列#函数图像点空格空白区域text示例网格简化| | - - - - - - - - - - - - - - | |代码实现#includebits/stdc.h using namespace std; // 判断字符是否为数字 bool isDigit(char c) { return c 0 c 9; } // 获取运算符优先级 int getPriority(char op) { if(op || op -) return 1; if(op * || op /) return 2; return 0; } // 计算两个数的运算 int applyOp(int a, int b, char op) { switch(op) { case : return a b; case -: return a - b; case *: return a * b; case /: return a / b; } return 0; } // 表达式计算器支持负数 int calculate(string expr) { // 去掉空格 expr.erase(remove(expr.begin(), expr.end(), ), expr.end()); // 处理一元负号在负号前加0 string processed ; for(int i 0; i expr.size(); i) { if(expr[i] -) { if(i 0 || expr[i-1] ( || expr[i-1] || expr[i-1] - || expr[i-1] * || expr[i-1] /) { // 这是一元负号前面加0 processed 0-; continue; } } processed expr[i]; } expr processed; // 两个栈数字和运算符 vectorint nums; vectorchar ops; for(int i 0; i expr.size(); i) { char c expr[i]; if(isDigit(c)) { // 解析数字 int num 0; while(i expr.size() isDigit(expr[i])) { num num * 10 (expr[i] - 0); i; } i--; nums.push_back(num); } else if(c () { ops.push_back(c); } else if(c )) { // 计算括号内的表达式 while(!ops.empty() ops.back() ! () { int b nums.back(); nums.pop_back(); int a nums.back(); nums.pop_back(); char op ops.back(); ops.pop_back(); nums.push_back(applyOp(a, b, op)); } if(!ops.empty()) ops.pop_back(); // 弹出 ( } else if(c || c - || c * || c /) { // 处理运算符优先级 while(!ops.empty() ops.back() ! ( getPriority(ops.back()) getPriority(c)) { int b nums.back(); nums.pop_back(); int a nums.back(); nums.pop_back(); char op ops.back(); ops.pop_back(); nums.push_back(applyOp(a, b, op)); } ops.push_back(c); } } // 处理剩余的运算符 while(!ops.empty()) { int b nums.back(); nums.pop_back(); int a nums.back(); nums.pop_back(); char op ops.back(); ops.pop_back(); nums.push_back(applyOp(a, b, op)); } return nums.empty() ? 0 : nums.back(); } char ff[35][35]; int main() { string expr; getline(cin, expr); // 去除表达式中的空格 string cleaned_expr ; for(char c : expr) { if(c ! ) cleaned_expr c; } expr cleaned_expr; // 如果表达式以 y 开头去掉 y if(expr.find(y) 0) { expr expr.substr(2); } // 初始化网格 for(int i 1; i 30; i) { for(int j 1; j 30; j) { if(i 15 j 15) ff[i][j] ; else if(i 15) ff[i][j] -; else if(j 15) ff[i][j] |; else ff[i][j] ; } } cout 绘制函数: y expr endl; cout x的范围: -15 到 15 endl; cout y的范围: -15 到 15 endl; cout 网格中心 (15,15) 对应坐标 (0,0) endl endl; for(int x -15; x 15; x) { string a expr; string x_str to_string(x); // 替换表达式中的x为数字 size_t pos 0; while(true) { pos a.find(x, pos); if(pos string::npos) { pos a.find(X, pos); if(pos string::npos) break; } a.replace(pos, 1, x_str); pos x_str.length(); } int y calculate(a); cout x x , y y endl; // 坐标映射到网格 // x: -15-1, 0-15, 15-30 // y: 15-1, 0-15, -15-30 int grid_x x 16; // -15-1, 0-16, 15-31 int grid_y 16 - y; // 15-1, 0-16, -15-31 // 边界检查 if(grid_x 1 grid_x 30 grid_y 1 grid_y 30) { ff[grid_y][grid_x] #; } } // 输出网格 for(int i 1; i 30; i) { for(int j 1; j 30; j) { cout ff[i][j] ; } cout endl; } return 0; }

相关新闻

最新新闻

python中常用的 for语句

python中常用的 for语句

for语句。 for语句用来对序列, 或者其他能够被迭代的对象里的元素去进行迭代, 这些可被迭代的对象涵盖了列表, 原组, 字典, 集合等, 在每一次进行迭代时, for循环会从可被迭代对象当中获取下一个元素且把它赋值给变量, 接着去执行语句中的代码。 可迭代对象里所有元素都被迭代…

2026/9/3 16:35:53
AI时代小白程序员如何避免失业?掌握这4种能力,3个调整就够了!

AI时代小白程序员如何避免失业?掌握这4种能力,3个调整就够了!

AI职场现状并非非黑即白,它正在筛选而非消灭职业。模板化工作易被替代,而涉及复杂纠纷处理、实战经验、风险把关和权衡取舍的能力则难以被AI取代。对于职场人,建议跳出纯执行,善用AI并积累独特资产,以适应职场分层变化…

2026/9/3 16:25:53
小白程序员抓住AI前端开发高薪风口,转型就靠它!

小白程序员抓住AI前端开发高薪风口,转型就靠它!

文章指出,随着AI技术的发展,前端开发的高价值赛道已转向AI前端开发工程师。企业急需能将AI落地到产品的前端工程师,而非传统的前端开发者。掌握AI前端应用开发的核心逻辑、技术体系(如Fine-tuning、Agent、RAG)并积累实…

2026/9/3 16:25:53
【具身智能仿真平台实战:MuJoCo 从入门到精通】目录及阅读提示

【具身智能仿真平台实战:MuJoCo 从入门到精通】目录及阅读提示

开篇:本文所有截图都经过了作者验证!部分内容由大模型生成,作者经过整理和实验验证,排除了大模型生成中的错误和代码版本,环境错误,幻觉等所有坑点,所有踩过的坑希望能助力您学习MuJoCo 提升效率。可放心学习! 注意:仿真环境测试,不代表真机测试。本书籍只针对仿真测…

2026/9/3 16:00:45
allure总结思考--版本不相容,没有trend(生成原始报告+复制history后在一起生成新报告)

allure总结思考--版本不相容,没有trend(生成原始报告+复制history后在一起生成新报告)

问题一:使用allure生成测试报告报错:AttributeError: ‘str’ object has no attribute ‘isascii’ 出现:同样的脚本使用 pytest 的 --htmlreport/report.html 时没有报错,但当我把配置改成 --alluredir ./report 后,…

2026/9/3 15:45:44
【沁恒蓝牙开发】LCD低功耗配置

【沁恒蓝牙开发】LCD低功耗配置

简介 LCD 特指 液晶段码屏,如小米温湿度计LCD IO 分配如下:LCD例程低功耗 在EVT\EXAM\LCD例程中,默认已经配置好低功耗相关的代码了,只需要注释中断相关的代码 或 修改中断触发引脚为非LCD相关的引脚 就可以实现低功耗。 注&#…

2026/9/3 15:45:44