【好用的分时源码】【中易联盟源码】【卡铺网源码】mfc计算器源码_mfc计算器代码

时间:2024-11-28 17:27:01 来源:卖粉丝源码 编辑:bjl源码启动

1.mfc������Դ��
2.VS2012怎么利用MFC制作简单的计c计计算器?

mfc计算器源码_mfc计算器代码

mfc������Դ��

       算法已经这么明确了

       程序还是要自己写啊

       基于一种算法,语言实现相差不是算器算器很大

       自己试试把

       计算器程序~~~

       #include<stdio.h>

       #include<stdlib.h>

       #include<string.h>

       #include<ctype.h>

       #include<math.h>

       #define stacksize

       //---字符栈的基本操作----------------------------------

       typedef char datatype1;

       typedef struct //定义字符栈,用数组表示

       {

       datatype1 data[stacksize];

       int top;

       } seqstack1;

       void initstack1(seqstack1 *s)//置空栈

       {

       s->top = -1;

       }

       int stackempty1(seqstack1 *s)//判栈空

       {

       return s->top == -1;

       }

       int stackfull1(seqstack1 *s)//判栈满

       {

       return s->top == stacksize-1;

       }

       void push1(seqstack1 *s,源码 char x)//进栈

       {

       if(stackfull1(s)) return ;

       ++s->top;

       s->data[s->top] =x;

       }

       char pop1(seqstack1 *s)//退栈

       {

       if(stackempty1(s)) return NULL;

       s->top--;

       return s->data[s->top+1];

       }

       char stacktop1(seqstack1 *s)//访问栈顶元素

       {

       if(stackempty1(s)) return NULL;

       return s->data[s->top];

       }

       //---整数栈的基本操作----------------------

       typedef double datatype2;

       typedef struct//定义数栈,用数组表示

       {

       datatype2 data[stacksize];

       int top;

       }seqstack2;

       void initstack2(seqstack2 *s)//置空栈

       {

       s->top = -1;

       }

       int stackempty2(seqstack2 *s)//判栈空

       {

       return s->top == -1;

       }

       int stackfull2(seqstack2 *s)//判栈满

       {

       return s->top == stacksize-1;

       }

       void push2(seqstack2 *s,代码 double x)//进栈

       {

       if(stackfull2(s)) return ;

       ++s->top;

       s->data[s->top] =x;

       }

       double pop2(seqstack2 *s)//退栈

       {

       if(stackempty2(s)) return NULL;

       s->top--;

       return s->data[s->top+1];

       }

       double stacktop2(seqstack2 *s)//访问栈顶元素

       {

       if(stackempty2(s)) return NULL;

       return s->data[s->top];

       }

       char proceed(char a,char b)//判断运算符的优先级,a为栈内运算符,计c计b为栈外运算符

       {

       int i,算器算器好用的分时源码j;

       char c1[6]={ '#','(','+','*','^',')'},c2[6]={ '#',')','+','*','^','('};

       if(a=='-')a='+';

       if(b=='-')b='+';

       if(a=='/')a='*';

       if(b=='/')b='*';

       for(i=0;i<6;i++)if(c1[i]==a)break;

       for(j=0;j<6;j++)if(c2[j]==b)break;

       if((i==0&&j==1)||(i==1&&j==0)||(i==5&&j==5))

       return 'x';

       else if(i==j&&(i==0||i==1))

       return '=';

       else if(i<j)return '<';

       else return '>';

       }

       double transform(char *s,int *i)//字符型数据转化为双精度型数据

       {

       int j=0,n;

       double a[],sum1=0,sum2=0;

       for(;isdigit(s[*i]);(*i)++)

       a[j++]=s[*i]-'0';

       n=j;

       for(j=0;j<n;j++)

       sum1=(sum1+a[j])*;

       sum1=sum1/;

       if(s[(*i)]=='.')

       {

       *i=*i+1;

       for(j=0;isdigit(s[*i]);(*i)++)

       a[j++]=s[*i]-'0';

       for(j=j-1;j>=0;j--)

       sum2=(sum2+a[j])/;

       }

       return sum1+sum2;

       }

       double operate(double a,char r,double b)//运算函数

       {

       switch(r)

       {

       case'+':return a+b;break;

       case'-':return a-b;break;

       case'*':return a*b;break;

       case'/':return a/b;break;

       case'^':return pow(a,b);break;

       default:printf("error");

       };

       }

       double evalexpres(char *s)//求表达式值的函数

       {

       char ch,r;

       int i=0;

       double a,b,num;

       seqstack1 *stack1;

       seqstack2 *stack2;

       stack1=(seqstack1*)malloc(sizeof(seqstack1));//创建字符栈

       stack2=(seqstack2*)malloc(sizeof(seqstack2));//创建数栈

       initstack1(stack1);

       push1(stack1,'#');

       initstack2(stack2);

       ch=s[i];

       while(ch!='#'||stacktop1(stack1)!='#')//扫描表达式

       {

       if(isdigit(ch))//如果是‘0’~‘9’,转换为整形,进数栈

       {

       num=transform(s,源码&i);

       push2(stack2,num);

       ch=s[i];

       }

       else

       {

       switch (proceed(stacktop1(stack1),ch))

       {

       case'<'://栈内符号优先级低,栈外符号进栈

       push1(stack1,代码ch);

       ch=s[++i];

       break;

       case'='://脱括号并接收下一个字符。

       pop1(stack1);

       ch=s[++i];

       break;

       case'>'://退栈并将运算结果入数栈。计c计

       r=pop1(stack1);

       b=pop2(stack2);

       a=pop2(stack2);

       printf("计算步骤:\n%.3f%c%.3f=%.3f\n",算器算器a,r,b,operate(a,r,b));//输出运算步骤

       push2(stack2,operate(a,r,b));

       break;

       case'x': printf("原表达式%s有误,请检查:\n",s);break;

       }//switch

       }//else

       }//while

       return stacktop2(stack2);

       }

       main()

       {

       double num;

       char s[stacksize];

       printf("\t\t\t| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|\n");

       printf("\t\t\t|^_^这是我的计算器^_^|\n");

       printf("\t\t\t|____________________|\n");

       printf("\t\t支持加,减,源码乘,代码除,计c计指数及括号运算.\n");

       printf("\t\t数据可以为双精度类型的算器算器任意数\n");

       printf("\t\t请输入表达式,并以#结束:\n");

       scanf("%s",源码s);

       while(s[strlen(s)-1]!='#')

       {

       printf("输入有误!请重新输入:\n");

       scanf("%s",s);

       }

       num=evalexpres(s);

       printf("%s=%.3f\n",s,num);

       getchar();

       }

       面积的就太简单了

       只写核心

       #include<stdio.h>

       #include<math.h>

       main()

       {

       float l,s;

       float a,b,c;

       scanf("%f,%f,%f",&a,&b,&c);

       l=(a+b+c)/2;

       s=sqrt(l*(l-a)*(l-b)*(l-c));

       printf("%.3f",s);

       }

VS怎么利用MFC制作简单的计算器?

       用MFC来制作一个简单的计算器,来加深对MFC学习的中易联盟源码理解,这个计算器是建立在对话框的基础上,下面来简单介绍下如何制作属于你自己的计算器。

       1、首先,点击VS,启动VS软件,然后建立如下图所示的应用程序,在图的卡铺网源码下面输入项目名

       2、建立基于对话框的标准程序,如下图所示,其余设置采用系统设置,点击完成

       3、如下图,软件会生成下面的对话框,还有相应的库,代码,广告网源码资源文件等

       4、对上面的对话框进行编辑,如下图中所示,最后编辑的样子如下,其中1,5,6是Edit 控件,2,酷家乐源码7是静态控件,3是buttion,4是取消按钮改了个名字,将各个控件按下图排好,并改好名字,其余部分采用软件默认

       5、对1,5,7控件添加变量,对控件右击,选择如下

       6、如下图变量添加向导,1选择Value,2选择Double (方便计算小数)3,是变量名,我们选择a,相同的方式,对上图中的1,5,7分别添加变量,分别为工a,b,sum

       7、添加完后在对话框上双击计算按钮,就会生成相应的消息映射,进入如下代码中,见下图

       8、在这个函数中添加下面代码,UpdataDate()函数中参数true表示从控件变量中获取数值,false相反sum=a+b,就是我们先在控件中添加的三个变量,此处所做的计算器只是用来做个加法

       9、添加完上述代码后,编译成功如下所示

       、ctrl+f5运行如下图

       、输入数值进行加法计算,你可以进行其它的相关扩展,比如减法,乘法等,都是相同的方法

copyright © 2016 powered by 皮皮网   sitemap