求教一个有三条边的算法图简单的算法

2 VC++编译的一个好用的数学计算十个数求一些简单方差等,供参考 Algorithm
182万源代码下载-
&文件名称: 2
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 31 KB
&&上传时间:
&&下载次数: 16
&&提 供 者:
&详细说明:VC++编译的一个好用的数学计算十个数求一些简单方差等,供参考-VC++ Compiled a useful 10 the number of mathematical calculations for some simple variance and so on, for reference
文件列表(日期:~)(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&十数计算&&........\ReadMe.txt&&........\res&&&&........\...\十数计算.rc2&&........\Resource.h&&........\StdAfx.cpp&&........\StdAfx.h&&........\十数计算.aps&&........\十数计算.clw&&........\&&........\十数计算.dsp&&........\十数计算.dsw&&........\&&........\十数计算.ncb&&........\十数计算.opt&&........\十数计算.plg&&........\&&........\&&........\
&近期下载过的用户:
&输入关键字,在本站182万海量源码库中尽情搜索:
&[] - 产生任意均值与方差的正态分布随机数序列
产生任意均值与方差的正态分布随机数序列
&[] - 用遗传算法求借最短路径的程序,是我找了很多地方才等到的
&[] - 日历C# 开发的日历控件 日历C# 开发的日历控件
&[] - 国外游戏开发者杂志2002年第九期配套代码,包含Jeff Lander关于绳索桥的模拟程序代码和Jonathan Blow的关于点之间计算协方差的例子
&[] - 偏最小二乘法中的交叉有效性计算,看看,可能有用
&[] - vc成绩管理系统主要用来计算平均分
方差等信息
&[] - VC+语言源代码,绘图控件,可实现曲线交叉功能数据采集,曲线绘制功能,多曲线叠加.
&[] - 图像纹理分析的好的源代码,可以计算纹理的二阶特征:能量,熵,局部稳定性,惯性距,和相关性。节省了分析纹理的研究人员的时间。
&[] - 使用VC++编写的大量数学算法的源代码,方便大家在做Windows程序开发时使用
&[] - Vc++6.0在数据分析方面计算一维数据组的数组特征(方差,均值,分为点等)
相关函数/类:
CWinApp CDialog CDataExchange CWnd DestroyIcon LoadIcon GetSystemMenu CMenu CString LoadString AppendMenu IsIconic CPaintDC SendMessage GetSystemMetrics CRect GetClientRect DrawIcon GetWindowText请在这里概述您的问题急急急急急急mfc制作一个简易计算器,要求如下_百度知道
按默认排序
&#47、 计算器系统开发设计思想1;更新显示}(5)编写处理计算函数在jsD TODO;成员函数处理计算 void OnOperandInput(int a)、减;&#47:void jsDlg .1:UpdateDisplay()
&#47,*;处理“ 1”按钮 // UpdateDisplay();}void CJsD&#47。并修改按钮的属性;
else if (m_operator == OpMultiply) /
m_operand=m_operand+(a)*m_coff、分析问题和解决问题的能力; m_operand = 0; TODO,对VC++可视化用户界面的理解进一步加深;判断是否输入新的数字;
while(m_}void CJsD 退出对话框程序}(4)编写用于实现计算的自定义函数在jsD&#47:Onjian() { &#47, ErrDivideByZero }; m_operator = OpA
m_coff=0;&#47、乘;%f&&#47:Calculate() {
if (m_errorS处理显示函数{ if (GetSafeHwnd() == NULL)
/处理“ 0”按钮{ &#47、 计算器系统开发的体会本次MFC计算器的制作;/ if (、 试验目的运用所学知识;/ TODO.cpp中编写;/&#47。然后对声明变量进行初始化,然后输出结果。依次输入第一个运算数;
&#47,1-是 0-否
m_operand=m_operand*10+(a);}void CJsDlg: Add your control notification handler code here OnOK();
&#47,代码如下: Add your control notification handler code here m_operand*=-1:On1()
/ if (m_errorState :Void CjsD}数字“0-9”控件的代码同上类似void CJsDlg:void jsDlg : Add your control notification handler code here m_operator = OpN默认为m_result变量初始化 /
else if (m_operator == OpDivide)
if (m_operand == 0)
m_errorState = ErrDivideByZero:输入;定义 枚举变量 m_operator 用以标识当前运算符 CalcError m_errorState:: CDialog(jsD{{AFX_DATA_INIT(CCaaDlg) m_result = _T(“”);
&#47:.1:、 试验内容设计一个多功能计算软件实现功能,-: Add your control notification handler code here OnOperandInput(0), CalcError结构enum Operator { OpN
为变量进行初始化 m_errorState = ErrNone,&#47:IDD, OpSubtract:;
i-=1,增加了编写程序的能力;}(6)编写处理显示函数在jsD}void CJsD&#47:2+5输出.GetLength(), lVal):7二; TODO: Add your control notification handler code here OnOperandInput(1):;}void jsD处理0-9 数字的输入函数{ if (m_errorState :;
/ m_bCoff=0;)
m_result,在对话框窗体上创建一个计算器所需的按钮;&#47: Add your control notification handler code here m_operand=sqrt(m_operand):72)实现单运算符表达式计算的功能;
else if (m_operator == OpAdd)
m_accum += m_operand,那么显示输入情况; /&#47。对类的类的封装和设计也有了一种新的认识;/
/); 定义 枚举 变量m_errorState 用以标识当前运算状态 BOOL m_bOperandA/}void CJsDlg.GetAt(i-1)=='&#47。输入的操作数可以包含整数或浮点数,这次实践然我学到了许多东西:Onqinglin() { /);/
m_bCoff=0;/小数输入时的系数 Operator m_ m_operator = OpM标识当前输入是否是新输入数字 void UpdateDisplay();/将float型转化为CString型
int i=m_result、第二个运算数;成员函数处理数字输入(2)对原文件jsDlg:OnR() { / TODO;}void CJsD TODO:输入;}void CJsD //&#47: Add your control notification handler code here Calculate()。结果可以作为下一个运算的第一运算数; m_coff=0; Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()-&gt.h”;判断是否是小数输入;
UpdateDisplay();/&#47:1)具备整型数据;否则按计算符进行计算
m_accum *= m_/}void CJsD用编辑控件变量m_result改变编辑控件的值!m_bOperandAvail) &#47、运算符(+;
/&#47,做出了自己想要的成果,将个按钮的ID改为向对应的符号。2。输入表达式如下:Onchu() { / UpdateDisplay(); TODO;
&#47:Onzhengfu() { &#47。2.Format(_T(&quot, OpM成员函数处理显示 void Calculate(); UpdateDisplay();*=NULL*&#47,更新显示 UpdateData(FALSE); else
/ TODO; }3;0'/= m_ TODO:;/ m_operator = OpS//为变量进行初始化 m_operator=OpNone、对主要成员函数编写代码(1) 对头文件jsDlg:Ondian() { &#47:例如;&#47,按‘R’返回 菜单;判断当前运算是否有误? m_operand :jsDlg(CWnd* pParent &#47:Onsqrt() { &#47:; UpdateDisplay().cpp中编写; m_errorState = ErrNone、除)运算功能:,1-是 0-否
m_operand = 0; UpdateDisplay();为变量进行初始化 m_bOperandAvail=FALSE,1);
/定义两个euum枚举类型O}
m_bOperandAvail = FALSE;enum CalcError { ErrNone.1;&#47: Add your control notification handler code here Calculate();如果当前计算无错误那么进行显示 {/ m_bOperandAvail = FALSE, OpA }
m_bOperandAvail=TRUE;
if(;// m_operator = OpD, OpDivide };
/如果是输入计算数;
if (m_bOperandAvail) {
&#47。不过;
&#47、 界面设计 创建一个基本对话框的MFC应用程序;//存储当前输入的操作数 double m_&#47,通过实践加强对所学知识的理解和巩固。并对编辑添加成员变量m_result用以显示结果.1; TODO:Ondengyu() { &#47。例如:On0()
m_result,如将 的ID改为IDC_zhengfu、 检查创建工程并运行三;/&#47,增强对相关知识的认识:;
/&#47,反复检查之后也终于不问题解决了: m_如果没有计算符就将m_operand值赋予m_accum
if (m_operator == OpNone)
m_accum = m_除数不能为零&quot:;);
} }/&#47.cpp编写代码因为该系统运算过程中需要使用平方跟函数;
&#47:&#47:;标识当前输入是否是小数 double m_/LoadIcon(IDR_MAINFRAME); TODO;
&#47!= ErrNone)
m_result=&为变量进行初始化}(3)对各控件编写代码void jsDlg :;
else if (m_operator == OpSubtract)m_accum -= m_operand!= ErrNone)
&#47::Oncheng() { /&#47:OnOperandInput(int a)
&#47: Add your control notification handler code here Calculate():Onpingfang() { /
m_accum &#47.cpp中编写:Onjia() { &#47,提高应用所学知识在世界中发现问题:jsDlg计算机系统设计报告一;
m_coff=0: Add your control notification handler code here Calculate()。在编写过程中也遇到了困难; TODO,则显示结果
float lVal = (m_bOperandAvail) ,学到了MFC基本的编程方法。总之、浮点型数据的算术(加;}void CJsDlg!= ErrNone)
return, pParent){ /
&#47.h编写代码在头文件中手动添加成员函数与成员函数变量:,所以在头文件中要添加头文件#include “ m_operator = OpNone:、 计算器系统功能及系统设计介绍1;为变量进行初始化 m_bCoff=0,为以后的学习积累了经验; m_accum = 0.Delete(i-1;
UpdateDisplay(); &#47,如果按下计算符;}void CJsDlg!m_bCoff)
&#47: Add your control notification handler code here m_bCoff=1;存储当前的计算处理结束 BOOL m_bCoff: Add your control notification handler code here Calculate(),也发现了自己的不足之处;&#47,有很大的进步; TODO,若有则返回
double m_operand: Add your control notification handler code here m_operand*=m_&#47,请教了许多同学。按‘C’清屏;}}AFX_DATA_INIT &#47:2+5在输出;
m_coff*=0,通过这次设计实践
没有对sin sinh n! 进行运算啊!!!不要复制别人的充数好不
我在网上帮你找的!不知道有么有用!这不叫复制好不好!这叫分享!又不是专门为200而来!
吃饱撑的了 做个计算器本来就是重复早轮子 还要 sin 各种算法 也要自己写 你以为你写个算法 就和人家 系统的一样人家内部的优化 你初写一个函数 就能考虑到 哪个老师留这种题就是顽固不化就这样你还想做项目,光挖骨灰 就把一生的时间浪费掉了
其他类似问题
您可能关注的推广回答者:
简易计算器的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前位置: >
> 遇到一个题用C写一个简易计算器,没思路啊,求大神指导用C写一个函数实现简单计算器功能,输入一个数学
遇到一个题用C写一个简易计算器,没思路啊,求大神指导用C写一个函数实现简单计算器功能,输入一个数学
wjsxxiangni & at
遇到一个题用C写一个简易计算器,没思路啊,求大神指导用C写一个函数实现简单计算器功能,输入一个数学表达式需要支持加、减、乘、除运算,不需要支持括号。 要求支持一个表达式:input:8+9 output:17input:-0.1*9
output:-0.9可选:支持多个表达式input: 2.5+2.5+2.5
output :7.5input: 2+2*2.5-1.5*2
腾讯考过该题,参见我的博客。上面是链接
starrain & &
& & (0)(2)  C/C++ code  /*---------------------------------------
函数型计算器(VC++6.0,Win32 Console)程序由 yu_hua 于设计完成
目前提供了10多个常用数学函数:
⑷开平方sqrt
⑸反正弦arcsin
⑹反余弦arccos
⑺反正切arctan
⑻常用对数lg
⑼自然对数ln
⑽e指数exp
⑾乘幂函数∧
如果要求2的32次幂,可以打入2^32&回车&
如果要求30度角的正切可键入tan(Pi/6)&回车&
注意不能打入:tan(30)&Enter&
如果要求1.23弧度的正弦,有几种方法都有效:
sin(1.23)&Enter&
sin 1.23 &Enter&
如果验证正余弦的平方和公式,可打入sin(1.23)^2+cos(1.23)^2 &Enter&或sin1.23^2+cos1.23^2 &Enter&
此外两函数表达式连在一起,自动理解为相乘如:sin1.23cos0.77+cos1.23sin0.77就等价于sin(1.23)*cos(0.77)+cos(1.23)*sin(0.77)
当然你还可以依据三角变换,再用sin(1.23+0.77)也即sin2验证一下。
本计算器充分考虑了运算符的优先级因此诸如:2+3*4^2 实际上相当于:2+(3*(4*4))
另外函数名前面如果是数字,那么自动认为二者相乘.
同理,如果某数的右侧是左括号,则自动认为该数与括弧项之间隐含一乘号。
如:3sin1.2^2+5cos2.1^2 相当于3*sin2(1.2)+5*cos2(2.1)
又如:4(3-2(sqrt5-1)+ln2)+lg5 相当于4*(3-2*(√5 -1)+loge(2))+log10(5)
此外,本计算器提供了圆周率 Pi键入字母时不区分大小写,以方便使用。
----------------------------------------*/
#include &iostream&
#include &iomanip&
#include &cstdlib&
#include &cstring&
#include &cctype&
#include &cmath&
#include &stdio.h&
#include &string.h&
#include &windows.h&
const char Tab=0x9;
const int MAXLEN=16384;
char s[MAXLEN],*
int pcs=15;
double fun(double x,char op[],int *iop) {
while (op[*iop-1]&32) //本行使得函数嵌套调用时不必加括号,如 arc sin(sin(1.234)) 只需键入arc sin sin 1.234&Enter&
switch (op[*iop-1]) {
7: x=sin(x);
8: x=cos(x);
9: x=tan(x);
case 10: x=sqrt(x); (*iop)--;
case 11: x=asin(x); (*iop)--;
case 12: x=acos(x); (*iop)--;
case 13: x=atan(x); (*iop)--;
case 14: x=log10(x);(*iop)--;
case 15: x=log(x);
case 16: x=exp(x);
double calc(char *expr,char **addr) {
//递归深度
static char *fname[]={ &sin&,&cos&,&tan&,&sqrt&,&arcsin&,&arccos&,&arctan&,&lg&,&ln&,&exp&,NULL};
double ST[10]={0.0}; //数字栈
char op[10]={'+'}; //运算符栈
char c,*rexp,*pp,*
int ist=1,iop=1,
if (!deep) {
c = *pp++;
if (c!=' '&& c!=Tab)
} while (c!='\0');
if ((c=*pp)=='-'||c=='+') {
last = !DIGIT;
while ((c=*pp)!='\0') {
if (c=='(') {//左圆括弧
ST[ist++]=calc(++pp,addr);
ST[ist-1]=fun(ST[ist-1],op,&iop);
last = DIGIT;
if (*pp == '('||isalpha(*pp) && strnicmp(pp,&Pi&,2)) {//目的是:当右圆括弧的右恻为左圆括弧或函数名字时,默认其为乘法
op[iop++]='*';
last = !DIGIT;
c = op[--iop];
else if (c==')') {//右圆括弧
} else if (isalpha(c)) {
if (!strnicmp(pp,&Pi&,2)) {
if (last==DIGIT) {
cout$<$ &π左侧遇)& $<$exit(1);
ST[ist++]=3.38328;
ST[ist-1]=fun(ST[ist-1],op,&iop);
last = DIGIT;
if (!strnicmp(pp,&Pi&,2)) {
cout$<$ &两个π相连& $<$exit(2);
if (*pp=='(') {
cout$<$ &π右侧遇(& $<$exit(3);
for(int i=0; (pf=fname[i])!=NULL; i++)
if (!strnicmp(pp,pf,strlen(pf)))
if (pf!=NULL) {
op[iop++] = 07+i;
pp += strlen(pf);
cout$<$ &陌生函数名& $<$exit(4);
} else if (c=='+'||c=='-'||c=='*'||c=='/'||c=='^') {
if (last != DIGIT) {
cout$<$ &运算符粘连& $<$exit(5);
if (c=='+'||c=='-') {
cc = op[--iop];
switch (cc) {
ST[ist-1] += ST[ist];
ST[ist-1] -= ST[ist];
ST[ist-1] *= ST[ist];
ST[ist-1] /= ST[ist];
ST[ist-1] = pow(ST[ist-1],ST[ist]);
} while (iop);
op[iop++] =
} else if (c=='*'||c=='/') {
cc = op[iop-1];
if (cc=='+'||cc=='-') {
op[iop++] =
op[iop-1] =
switch (cc) {
ST[ist-1] *= ST[ist];
ST[ist-1] /= ST[ist];
ST[ist-1] = pow(ST[ist-1],ST[ist]);
cc = op[iop-1];
if (cc=='^') {
cout$<$ &乘幂符连用& $<$exit(6);
op[iop++] =
last = !DIGIT;
if (last == DIGIT) {
cout$<$ &两数字粘连& $<$exit(7);
ST[ist++]=strtod(pp,&rexp);
ST[ist-1]=fun(ST[ist-1],op,&iop);
if (pp == rexp) {
cout$<$ &非法字符& $<$exit(8);
last = DIGIT;
if (*pp == '('||isalpha(*pp)) {
op[iop++]='*';
last = !DIGIT;
c = op[--iop];
if (iop&=ist) {
cout$<$ &表达式有误& $<$exit(9);
while (iop) {
switch (op[--iop]) {
ST[ist-1] += ST[ist];
ST[ist-1] -= ST[ist];
ST[ist-1] *= ST[ist];
ST[ist-1] /= ST[ist];
ST[ist-1] = pow(ST[ist-1],ST[ist]);
return ST[0];
int main(int argc,char **argv) {
if (argc&=1) {
if (GetConsoleOutputCP()!=936) system(&chcp 936&NUL&);//中文代码页
cout $<$ &计算函数表达式的值。&$<$endl$<<$支持(),+,-,*,/,^,Pi,sin,cos,tan,sqrt,arcsin,arccos,arctan,lg,ln,exp&$<$
while (1) {
cout $<$ &请输入表达式:&;
if (s[0]==0)//
cout $<$ s $<<$=&;
cout $<$ setprecision(15) $<$ calc(s,&endss) $<$
strncpy(s,argv[1],MAXLEN-1);s[MAXLEN-1]=0;
if (argc&=3) {
pcs=atoi(argv[2]);
if (pcs&0||15&pcs) pcs=15;
printf(&%.*lf\n&,pcs,calc(s,&endss));
printf(&%.15lg\n&,calc(s,&endss));
}starryprince & &
& & (0)(1)the c programming language 有一个简单的expert c programming 有一个upgrading 版
starry & &
& & (0)(0)switch语句就可以完成了,自己试着动手做下,很简单的
starrain09 & &
& & (0)(0)主要是楼主从输入信息中提取出数据和操作符。然后使用楼上说的switch来做都可以的
starrats & &
& & (0)(0)用栈就行了,例子如下1+2*3首先是简单的词法分析得到词素:&1&, &+&, &2&, &*&, &3&然后根据优先级法则构建语法树:
&3&然后用栈执行这个语法树即可。
starryskypp & &
& & (0)(0)《C++程序设计语言》第6章有个桌面计算器的实现,参考一下吧。
starry & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-一个简单的acm题,超时了,求改进算法求值Time Limit:1000MS Memory Limit:65536KTotal Submit:539 Accepted:83 Description 给出N个整数X1,X2,X3,……,Xn,将这N个数从小到大排序为A1,A2,A3,……,An,记数列A1,A2,A3,……,An的奇数项之和为P,偶数项_百度作业帮
一个简单的acm题,超时了,求改进算法求值Time Limit:1000MS Memory Limit:65536KTotal Submit:539 Accepted:83 Description 给出N个整数X1,X2,X3,……,Xn,将这N个数从小到大排序为A1,A2,A3,……,An,记数列A1,A2,A3,……,An的奇数项之和为P,偶数项
求值Time Limit:1000MS Memory Limit:65536KTotal Submit:539 Accepted:83 Description 给出N个整数X1,X2,X3,……,Xn,将这N个数从小到大排序为A1,A2,A3,……,An,记数列A1,A2,A3,……,An的奇数项之和为P,偶数项之和为Q,令T=|P-Q|,求出T的值.Input 输入文件的第1行为整数N(1≤N≤50000).接下来的N行每行有一个整数,按顺序给出X1,X2,X3,……,Xn的值(|Xi|
用用sort这个函数吧,不知道sort这个函数的话百度一下,或者再学习下其他的排序方法吧一个简单的一维数组消重复数字算法,求简洁_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:289,766贴子:
一个简单的一维数组消重复数字算法,求简洁收藏
比如说我让这5个5000消重复数字,只剩一个,通过前移实现,我这个算法很慢,计算机要反映很久,而且输出结果还是三个5000,为什么?#include &stdio.h&#include &stdlib.h& int main(){
int i,j,t;
int b[5]={00,};
for(i=0;i&j-1;i++)// 去重,若和之后重复则前移
{while(b[i]==b[i+1]//每次都要判断是否与当前b[i]相同
for(t=i+1;t&j-1;t++)
b[t]=b[t+1];
j--;//j为数组剩余元素个数
for(i=0;i&j;i++)
printf("%d ",b[i]);
printf("\n");
return 0;}
可以用mergeSort的变种解决
另,这种算法本身是错的
没明白 5000和5最后会变成什么。。?
不知道到问的啥
std::unique
lz要说明自己的问题啊
使用动态内存分配方法,经过多次比较复制后筛选不重不漏的数据
#include "stdafx.h"#include &stdio.h&void my_sort();bool is_in_array(int value,int dst[],int index);int main(int argc, char* argv[]){ my_sort(); return 0;}void my_sort(){ int src[15] = {100,100,200,350,100,10,1,250,350,250,150,200,100,100,100}; int dst[15] = {0}; int index = 0; for(int i = 0 ; i & 15 ; i ++){
if(!is_in_array(src[i],dst,index)){
dst[index ++] = src[i];
} } for(int j = 0 ; j & j ++){
printf("%d\n",dst[j]); }}bool is_in_array(int value,int dst[],int index){ for(int i = 0 ; i & i ++){
if(value == dst[i]){
#define N 10int main(){ int a[N];int b[N];int n1,n2=0;int k=1,k2=1;printf("赋值:");for(n1=0;n1&N;n1++)
scanf("%d",&a[n1]);b[n2]=a[n2]; for(n2=1;n2&N;n2++){
for(n1=0;n1&k;n1++)
if(a[n2]==b[n1])
{b[k++]=a[n2]; k2++;}} for(n1=0;n1&k2;n1++)
printf("%d,",b[n1]);}
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或}

我要回帖

更多关于 一个算法的效率可分为 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信