• 全部
  • 问答

在线等,VC中,高分求解:表达式计算的源程序(含三角函数)

cbc 2005-05-30 12:09:19
高分求解:表达式计算的源程序(含三角函数)
输入:一个字符串(CString类型):sinx-x*x/4;一个实数x(double类型):1.57
输出:计算后的结果:0.38377

求函数
double Compute(CString str,double x)
...全文
181 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mostideal 2005-05-31
学习。。
回复
nasi00 2005-05-31
我有可以算表达式的程序,你拿回去改改咯

#include <iostream>
using namespace std;

#include <stack>
#include <string>
#include <cstdlib>

void init(string& s)
{
getline(cin,s);
s+="@";
}

bool is_optr(char c)
{
string optr_list("+-*/()@");
for(int i=0;i<optr_list.size();i++)
if(c==optr_list[i])
return true;
return false;
}

char first(char op1, char op2)
{
string tab[7];
tab[0]=">><<<>>";
tab[1]=">><<<>>";
tab[2]=">>>><>>";
tab[3]=">>>><>>";
tab[4]="<<<<<=E";
tab[5]=">>>>E>>";
tab[6]="<<<<<E=";
string optr_list("+-*/()@");

int op1_loc, op2_loc;

for(op1_loc=0;op1_loc<optr_list.size();op1_loc++)
if(optr_list[op1_loc]==op1)
break;
for(op2_loc=0;op2_loc<optr_list.size();op2_loc++)
if(optr_list[op2_loc]==op2)
break;

return tab[op1_loc][op2_loc];
}

double operate(double x, char op, double y)
{
switch(op) {
case '+':
return x+y;
break;
case '-':
return x-y;
break;
case '*':
return x*y;
break;
case '/':
return x/y;
break;
}
return -1;
}

double calc(string& s)
{
stack<char> optr;
optr.push('@');
stack<double> opnd;

char c=s[0];
s.erase(0,1);

while( c!='@' || optr.top()!='@' ) {
if( !is_optr(c) ) {
string num;

num.insert(num.begin(), c);
int loc=0;
while( !is_optr(s[loc]) )
loc++;

string num2(s,0,loc);
num+=num2;
s.erase(0,loc);

double x=atof(num.c_str());
opnd.push(x);
c=s[0];
s.erase(0,1);
}
else {
switch( first(optr.top(), c) ) {
case '<':
optr.push(c);
c=s[0];
s.erase(0,1);
break;
case '=':
optr.pop();
c=s[0];
s.erase(0,1);
break;
case '>':
char op;
op=optr.top();
optr.pop();

double a,b;
a=opnd.top();
opnd.pop();
b=opnd.top();
opnd.pop();

double res;
res=operate(b,op,a);
opnd.push(res);

break;
}
}
}

return opnd.top();
}

int main()
{
string exp;
double ans;

init(exp);
ans=calc(exp);
cout<<ans<<endl;

return 0;
}
回复
useresu 2005-05-30
有点难度
觉的最好是换成前缀或后缀表达式,
然后压栈,
不是很懂,

mark!!!
回复
foochow 2005-05-30
mark!!!
回复
积木 2005-05-30
如果楼主比较清楚没有函数调用的后缀表达式转换方法,那就很简单了,实际上这个也不难,在处理表达式为后缀表达的时候直接计算sinx就可以了,至于一般的表达式求法,每一本数据结构书上都有,呵呵。
回复
相关推荐
FVM in CFD 学习笔记_第12章_高分辨率格式
将介绍发展HR格式的归一化变量公式(NVF)和总变差衰减(TVD)框架,分别展示了在NVF和TVD用于使HR格式更具形象化的归一化变量图和Sweby图。针对NVF和TVD,具体给出了一些HR格式的函数关系。还有上一章讲到的延迟...
CSDN回帖得分大全(近两年)
√vs2005调用dll的时候Initialize()函数返回错误 [VC/MFC ... [VC/MFC 界面] 40 chencheng8095 05-23 00:2911 xianglitian06-10 11:51管理√CFileFind::FindFile 支持通配符么? [VC/MFC 基础类] 100 wysbk002 05-22
我在CSDN参与的3000个帖子
今日偶然翻到,感慨万千 1:申述:版主,是否扣了我的专家分? 2:100分急求,随机输出十个小写字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望高手帮忙!...
【视觉-立体视觉】双目测距与三维重建的OpenCV实现问题集锦
双目测距与三维重建的OpenCV实现问题集锦(一)图像获取与单目定标 ...如上图所示,双目测距主要是利用了目标点在左右两幅视图上成像的横向坐标直接存在的差异(即视差)与目标点到成像平面的距离Z存在着反比例...
600个问与答
http://faq.xunweb.org/itfaq/mfcbasic/ 怎样彻底结束一个线程?(2006-06-04) v怎么样以纯idispatch方式而不是引入类型库的方法调...
大型场景裁剪渲染
3D游戏特别是网络在线游戏,室外大场景渲染是一块非常重要的内容,它也是3D图形引擎的核心。它是图形学和图像处理理论最直接的应用,其涉及的技术还可以应用于其它领域,比如虚拟现实、3D GIS、数据可视化,其...
编程新手导论
第二部分 导论,这一部分主要是关于编程的导论, (要懂得一点思想具备一点常识)《设计,编码,,与软工》(编程与思想)这一章解释了三种思想,原语,抽象,组合,,和软件开发的二个重要过程,,软件工程的相关...
图像处理岗位面试题
图像处理基础知识 彩色图像、灰度图像、二值图像和索引图像区别? 彩色图像:RGB图像。...索引图像:在灰度图像,自定义调色板,自定义输出256种颜色值。 常用的图像空间 HSI、HSV、RGB、CMY、CMY...
图像处理岗位面试题搜罗汇总
原文http://liqiang311.com/%E9%9D%A2%E8%AF%95/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86%E5%B2%97%E4%BD%8D%E9%9D%A2%E8%AF%95%E9%A2%98%E6%90%9C%E7%BD%97%E6%B1%87%E6%80%BB/ 传统图像处理部分 ...
新手编程导论
第一部分 前 言 By Chenyi 眼前这本书充分体现了作者的所思、所想、所感,他用自己独特的眼光审视着计算机技术的世界,也用自己独特的思维逻辑对技术进行解读,并用自己特有的,呵呵,偶尔带有“四个逗号=一...
编程新手导论(转载)
第二部分 导论,这一部分主要是关于编程的导论, (要懂得一点思想具备一点常识)《设计,编码,,与软工》(编程与思想)这一章解释了三种思想,原语,抽象,组合,,和软件开发的二个重要过程,,软件工程的相关...
多年收集的一些稀有软件4
QQ:365543212  Geovariances产品: Geovariances Isatis 2013 1CD(地质统计学软件) Geovariances.Isatis.2016.Win64 1CD Geovariances Minestis 2016 v2.0.0Win64 1CD ...3D-Sigma for WinALL-ISO 1CD(岩土体三维...
CListControl设置颜色
CListControl类派生,设置单元格颜色,丰富功能
掌握JQuery视频教程
JQuery是一个优秀的JavaScript库。它是轻量级的JS库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),是我们编写JavaScript的利器! 适合对象: 需要大量编写JavaScript的朋友 学习条件: 必须掌握HTML、CSS、JavaScript、dom
Linux系统管理员/网络管理员(PDF版)
两本非常好的Linux系统学习的书 系统管理主要介绍Linux系统的结构、管理、命令等 网络管理主要从网络协议角度出发阐述Linux的网络功能
STM32F103中文数据手册
这个里面包含了STM32F103的各种型号的数据手册,方面理解
WPF中用于嵌入其他进程窗口的自定义控件(AppContainer)
WPF中用于嵌入其他进程窗口的自定义控件(AppContainer) 具体见博文:http://blog.csdn.net/zzzwwwppp11199988899/article/details/78131292
MATLAB图像处理
MATLAB图像处理课程 通过学习该课程系统掌握MATLAB图像处理的相关知识点。
MSP430_RTC模块学习总结
这是自己在学习MSP430时,对RTC模块的总结,希望可以帮助刚入门者
CIET-2019-0504 数据中心运维管理人才标准.pdf
数据中心运维管理,人才标准,欢迎查看共同学习。
精通C语言指针
指针被誉为C语言的精髓、C本质上是加了一层语法糖的汇编,引进当时先进的函数,保留了汇编强大的地址直接访问功能 —— 指针,使其高效灵活。本课程是黄强老师对于指针的一次专题讲解,相信能给大家带来收获! a:0:{}
webrtc demo使用方法
谷歌webrtc demo的使用教程,webrtc源代码自行从官网下载,该教程只给出了源代码详细的使用方法,包括如何编译
OpenGL ES2.0基础
初级学习OpenGL ES2.0的课程,从无到有,从进本的函数讲起,每一课时都附带一个例子程序。深入浅出的讲解可编程管线技术,令人费解的文理,以及混合技术,各种优化技术:顶点缓冲区,索引缓冲区,帧缓冲区,介绍精灵的使用,并使用shader制作粒子特效。 掌握OpenGL ES2.0可编程管线,以及OpenGLES2.0的特性,带领初学者入门。
朴素贝叶斯算法做文本分类-代码
https://blog.csdn.net/zzZ_CMing/article/details/89478436 朴素贝叶斯算法做文本分类,用的是谭松波酒店语料。
FANUC的3210密码破解软件
FANUC 3210 密码破解软件,读取SRAM备份文件,不需要注册,完全免费。
PDB符号文件查看工具 symview,pdbxtract
PDB符号文件查看工具, 包含2个工具symview 和pdbxtract symview可查看文件所有原始信息 pdbxtract 可方便查看结构体等信息, 可导出头文件或xml
winform常用控件
主要包含内容: 第一讲 课程简介 第二讲 Windows窗体-创建和介绍 第三讲 Windows窗体-属性 第四讲 Windows窗体-方法和事件 第五讲 Windows窗体-MDI窗体和子窗体 第六讲 控件的相关操作 第七讲 Label控件显示世界你好 第八讲Button控件 第九讲TextBox控件 第十讲RichTextBox控件 第十一讲ComboBox控件 等 学会winform常用控件基本使用
FANUC PMC密码破解程序
FANUC 31I PMC密码破解程序 用于OID,30I,31I等FANUC的密码破解
SIEMENS 840D SL调试手册.rar
里面含有840dsl的全部维修,调试,使用手册和资料,编程手册,报警诊断手册,PLC维修调试,系统报警代码,HMI高级手册.等.
(亲测正确版)ASP.NET-c#-捕捉网页快照-网站截图-网站缩略图
(亲测正确版)ASP.NET-c#-捕捉网页快照-网站截图-网站缩略图 ★★★★★★★★★★★★★★★★★★★★★★★★★★★ 建立网站缩略图源码 网页快照ASP.NET网站截图 网页快照ASP.NET c# 输入网址获取网站图片 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 网上流传了很多网站缩略图的asp.net,但是都无法使用,本人亲测,该代码进行优化,速度快,效率高,占内存非常少。
发帖
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2005-05-30 12:09
社区公告
暂无公告