C++實現簡易計算器
實現功能:加減乘除乘方開方六種基本運算
開方采用二分法完成,精度控制在0.0000001內
加減乘除其實沒必要寫函數,寫函數是強迫症為了保證畫風統一
#include<iostream>
#include<cstring>
#include<float.h>
using namespace std;
double myAdd(double x,double y){ //加法
return x + y;
}
double myReduce(double x,double y){ //減法
return x - y;
}
double myMultipy(double x,double y){ //乘法
return x * y;
}
double myDivide(double x,double y){ //除法
return x / y;
}
double myPower(double x,double n){ //乘方,只支持正整數冪
double result = 1;
if(n > 0 && n == (int)n){
for(int i=0;i<n;i++){
result = result*x;
}
return result;
}else{
cout<<"抱歉,簡易計算器僅支持正整數的冪運算"<<endl;
}
}
double myAbsolute(double x){
if(x >= 0){
return x;
}else{
return -x;
}
}
double myRoot(double x,double n){ //開方運算
if(n > 0 && n == (int)n){
double mid,low,high;
double pMid; //中值的n次方
high = x;
low = 0;
for(;;){
mid = (high + low) / 2;
pMid = myPower(mid,n); //power mid
if( (x == pMid) ||
(myAbsolute(x - pMid) < 0.0000001)){
break;
}else if(x > pMid){
low = mid;
mid = (high + mid) / 2;
}else{ // x < pMid
high = mid;
mid = (mid + low) / 2;
}
}
return mid;
}else{
cout<<"抱歉,簡易計算器僅支持正整數根的開方運算"<<endl;
}
}
void calculate(){
double left,right;
string op;
cout<<"請依次輸入您的左運算數、運算符和右運算數"<<endl;
cin>>left>>op>>right;
if(op == "+"){
cout<<myAdd(left,right)<<endl;
}else if(op == "-"){
cout<<myReduce(left,right)<<endl;
}else if(op == "×"){
cout<<myMultipy(left,right)<<endl;
}else if(op == "÷"){
cout<<myDivide(left,right)<<endl;
}else if(op == "^"){
cout<<myPower(left,right)<<endl;
}else if(op == "√"){
cout<<myRoot(right,left)<<endl;
}else{
cout<<"抱歉,簡易計算器暫不支持這種運算"<<endl;
}
}
int main(){
while(1){
calculate();
}
}