社区
C++ 语言
帖子详情
在线等,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)
...全文
202
5
打赏
收藏
在线等,VC中,高分求解:表达式计算的源程序(含三角函数)
高分求解:表达式计算的源程序(含三角函数) 输入:一个字符串(CString类型):sinx-x*x/4;一个实数x(double类型):1.57 输出:计算后的结果:0.38377 求函数 double Compute(CString str,double x)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
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章_
高分
辨率格式
本章继续讲解对流项格式的发展,讨论如何对高阶(HO)格式施加有界性来产生
高分
辨率(HR)格式。将介绍发展HR格式的归一化变量公式(NVF)和总变差衰减(TVD)框架,分别展示了在NVF和TVD
中
用于使HR格式更具形象化的归一化变量图和Sweby图。针对NVF和TVD,具体给出了一些HR格式的函数关系。还有上一章讲到的延迟修正(Deferred Correction(DC)),介绍了两种技术来实现在结构网格和非结构网格的HO和HR格式,即,背风加权因子(DWF)方法和归一化加权因子(NWF)方法。
CSDN回帖得分大全(近两年)
√vs2005调用dll的时候Initialize()函数返回错误 [
VC
/MFC 基础类] 40 ylongwu 05-21 20:486 ylongwu06-28 13:42管理√为什么我创建登陆框之后,然后获取登陆框的数据时候总是出现非法操作! [
VC
/MFC 界面] 40 chencheng8095 05-23 00:2911 xianglitian06-10 11:51管理√CFileFind::FindFile 支持通配符么? [
VC
/MFC 基础类] 100 wysbk002 05-22
统考
计算
机
单选题1、
计算
机操作系统是一种______。A.系统软件B.应用软件C.工具软件D.调试软件答案:A2、冯·诺依曼结构形成了
计算
机的______。A.发展结构B.基本结构C.逻辑结构新D.数据结构答案:B3、
计算
机
中
,完成程序指令指定的基于二进制数的算术运算或逻辑运算的部分是______。A.内存储器B.输入输出设备C.外存储器D.运算器答案:D4、
计算
机内部用于处理数据和指令的编码是______。A.十进制码B.二进制码C.ASCII码D.汉字编码答案:B5、
计算
机具有很高的
计算
精度的根本原因是_____
我在CSDN参与的3000个帖子
今日偶然翻到,感慨万千 1:申述:版主,是否扣了我的专家分? 2:100分急求,随机输出十个小写字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望高手帮忙! 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,常用软件、游戏、精美图库下载,希望对网友有帮助!顺便散分! 6:VBA请教怎
大型场景裁剪渲染
原文:http://nvidia.e-works.net.cn/document/200908/article8917.htm 3D游戏特别是网络
在线
游戏
中
,室外大场景渲染是一块非常重要的内容,它也是3D图形引擎的核心。它是图形学和图像处理理论最直接的应用,其涉及的技术还可以应用于其它领域,比如虚拟现实、3D GIS、数据可视化等,其重要性不容置疑。随着硬件的不断发展,行业对渲染场
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章