C++实现简易计算器

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();	
	}
}
posted @ 2022-02-05 10:30  草系编程苦手  阅读(838)  评论(0编辑  收藏  举报