注册 登录
编程论坛 VC++/MFC

用C++编写简单的计算器。。。

子曦 发布于 2013-05-31 23:51, 2521 次点击
大家帮帮忙,帮我用vc++6.0(用Win32 Console Application中c++ Source File)编写一个简单的计算器。。。。
要Win32 Console Application中c++ Source File能运行的,在Win32 Console Application中建一个an empty project(空的工程),files选择c++ Source File.谢了!!!

用C++编写计算器
1.界面完善,友好,不看程序代码知道功能
2.要求至少5种计算功能(加、减、乘、除、乘方等)
3.至少有正弦、余弦等一种功能
4.需要用到函数的调用

计算机作业.....T T.....



10 回复
#2
子曦2013-06-01 00:03

计算机作业。。
#3
cwj9762779162013-06-01 14:50
到处都看的到你在要作业,唉!
#4
新手坑2013-06-01 18:48
作业。。。。没看到论坛声明吗
#5
子曦2013-06-02 12:39
回复 4楼 新手坑
我会加减乘除乘方,但是我不会函数的调用和正弦余弦,只要教会我就行了,,,,
#6
子曦2013-06-02 12:40
回复 3楼 cwj976277916
我也很无奈。。。。。
#7
一只程序猿2013-06-05 17:31
回复 5楼 子曦
正余弦你include<math.h>就能直接用了,形如sin(A),A是你要求的度数,至于函数的调用不太明白你的意思,你不是把加减乘除都携程函数了吗,比如void add(float a,float b){...}你直接add(A,B)(A,B是你要加的数)就是调用啊。
#8
RobinWang2013-06-05 23:24
回复 楼主 子曦
#include <iostream>
#include <string>
using namespace std;
int main()
{
 double Get_result(char array[],int n);
 char str[50];
 cout<<" 请输入公式:"<<endl;
 cin>>str;
 cout<<str<<endl;
 double result;
 int n;n=strlen(str);
 result=Get_result(str,n);
 cout<<"="<<result<<endl;
 return 0;
}
double Get_result(char array[],int n)
{
 int i=0,z=0,s;double a[20];char b[20];
 double rate=10.0,itemp=0.0;
 for(;i<20;i++)
 a[i]=1000000.0;
 for(i=0;i<10;i++)
 b[i]=' ';
for(i=0;i<n;i++)
 {
  if(array[i]>='0'&&array[i]<='9')
  {
   if(rate==10.0)
    itemp=itemp*rate+(array[i]-'0');
   else
   {
    itemp=itemp+rate*(array[i]-'0');
    rate=rate/10;
   }
  }
  else if(array[i]=='.')
   rate=0.1;
  else if(array[i]=='+')
  {
   a[z]=itemp;itemp=0;z++;
   b[z]='+';z++;
   rate=10.0;
  }
  else if(array[i]=='-')
  {
   a[z]=itemp;itemp=0;z++;
   b[z]='-';z++;
   rate=10.0;
  }
  else if(array[i]=='*')
  {
   a[z]=itemp;itemp=0;z++;
   b[z]='*';z++;
   rate=10.0;
  }
  else if(array[i]=='/')
  {
   a[z]=itemp;itemp=0;z++;
   b[z]='/';z++;
   rate=10.0;
  }
  a[z]=itemp;
  s=z;
 }
i=0;z=1;
 int x=0,y=1,t;double result;
 for(i=0;i<=s;i++)
 {
  if(b[i]=='/')
  {
   a[i+1]=1/a[i+1];
   b[i]='*';
  }
 }
 for(i=0;i<=s;i++)
 {
  if(b[i]=='*')
  {
   if(i-t==2)
   {
    a[t-z]=a[t-z]*a[i+1];
       z=z+2;
   }
   a[i-1]=a[i-1]*a[i+1];
   a[i+1]=1000000.0;
    b[i]=' ';
   t=i;
  }
 }
 for(i=0;i<=s;i++)
 {
  if(a[i]!=1000000.0)
  {
   a[x]=a[i];
   x=x+2;
  }
  if(b[i]!=' ')
  {
   b[y]=b[i];
   y=y+2;
  }
 }
 for(i=0;i<=y-2;i++)
 {
  if(b[i]=='+')
   a[0]=a[0]+a[i+1];
  else if(b[i]=='-')
   a[0]=a[0]-a[i+1];
 }
 result=a[0];
return result;
}
#9
尹金魁20312013-06-09 12:11
计算正弦,余弦时要用到“#include<math>"头文件,例如计算正弦:double sin(double x);
这种形式与我们经常计算一元二次函数时的开平方差不多,例如:int sqrt(int x);
#10
尹金魁20312013-06-09 12:31
#include<iostream>
#include<math.h>
using namespace std;

int main()
{
double a,b,c;
char oper;
cout<<"please enter the left number :operator:the right number"<<endl;

cin>>a>>oper>>b;
c=a/b;
if(oper=='+')                cout<<a<<'+'<<b<<'='<<a+b<<endl;
else if(oper=='-')           cout<<a<<'-'<<b<<'='<<a-b<<endl;
else if(oper=='*')           cout<<a<<'*'<<b<<'='<<a*b<<endl;
else if(oper=='/'&&b!=0)     cout<<a<<'/'<<b<<'='<<a/b<<endl;
else if(oper=='^')           cout<<a<<'^'<<b<<'='<<pow(a,b)<<endl;
else if(oper=='sin')         cout<<a<<'sin'<<b<<'='<<sin(c)<<endl;
else if(oper=='cos')         cout<<a<<'cos'<<b<<'='<<cos(c)<<endl;
else                         cout<<"you enter error,please have a check!"<<endl;
return 0;
}
正,余弦计算不了,怎么破?
#11
尹金魁20312013-06-11 09:41
是不是a和b 都得是弧度才可以,若是如此,该怎么输入呢?请大师指点一二!
1