21xrx.com
2024-12-23 00:02:01 Monday
登录
文章检索 我的文章 写文章
C++四则运算计算器程序的编写实现
2023-07-04 21:59:45 深夜i     --     --
C++ 四则运算 计算器程序 编写 实现

C++是一种常用的编程语言,也是许多计算器程序的实现语言。在本文中,将介绍如何使用C++编写一个四则运算计算器程序。

首先,需要确定程序的功能。四则运算计算器可以进行加减乘除四种运算,还需要支持多数字计算和小数计算。因此,程序需要一个输入界面,用于用户输入运算表达式,还需要一个计算功能,用于计算表达式的结果,并输出结果。

接下来就是程序编写。需要包含输入输出流头文件和math.h头文件,以便进行数值计算。程序中需要定义以下变量:

1. 字符串变量expression,用于存储用户输入的运算表达式。

2. 整型变量len,用于存储表达式的长度。

3. 双精度浮点型变量result,用于存储计算结果。

程序的主体部分分为输入和计算两个部分。

输入部分需要使用getline函数从控制台接收用户输入,并将输入存储到字符串变量expression中。计算部分需要将字符串表达式转换为算式,并进行计算。程序中需要定义以下函数:

1. doubel calculate(string),用于将表达式转换为算式,并进行计算。

在计算函数中,要将字符串表达式转换为算式。因此,需要使用逆波兰表示法或中序表示法进行转换。本程序使用中序表示法进行转换。

代码实现:

#include

#include

using namespace std;

double calculate(string);

int main()

{

  string expression;

  cout<<"请输入要计算的表达式:"<

  getline(cin,expression);

  double result = calculate(expression);

  cout<<"计算结果为:"< <

  return 0;

}

double calculate(string expression)

{

  int len = expression.length();

  double result = 0;

  double num = 0; //存储取出的数字

  int flag = 1; //符号标志,为1时表示为正数,为-1时表示为负数

  int i=0; //表达式循环指针

  char operation; //存储运算符号

  while(i

    //判断是数字还是符号

    if(expression[i]>='0'&&expression[i]<='9'){

      num = 0;

      while(i ='0'&&expression[i]<='9'){

        num = num*10 + expression[i++]-'0';

      }

      num = flag*num; //判断数的符号

    }

    else{

      if(expression[i] == '-')

        flag = -1;

      else if(expression[i] == '+')

        flag = 1;

      else if(expression[i] == '*'){

        operation = '*';

      }

      else if(expression[i] == '/')

        operation = '/';

      else if(expression[i] == '('){//开始括号匹配

        int lt = 1;

        int rt = 0;

        string newexpression;

        i++;

        while(lt!=rt){

          if(expression[i] == '(')

            lt++;

          else if(expression[i] == ')')

            rt++;

          newexpression += expression[i];

          i++;

        }

        num = calculate(newexpression); //匹配的值直接计算

      }

    }

    if(expression[i] == '+'||expression[i] == '-'||i==(len-1)){//加减号或末尾

      result += flag*num;

      num = 0;

    }

    else if(expression[i] == '*'||expression[i] == '/'){//乘除号

      int j=i+1;

      double num2 = 0;

      int flag2 = 1;

      while(j <'0'||expression[j]>'9')&&expression[j]!='('){//取出下一个数

        if(expression[j] == '-')

          flag2 = -1;

        j++;

      }

      if(expression[j]>='0'&&expression[j]<='9'){

        while(j ='0'&&expression[j]<='9'){

          num2 = num2*10 + expression[j++]-'0';

        }

        num2 = flag2*num2; //判断数的符号

        i = j-1;

      }

      else if(expression[j] == '('){//括号直接递归计算

        int lt = 1;

        int rt = 0;

        string newexpression;

        j++;

        while(lt!=rt){

          if(expression[j] == '(')

            lt++;

          else if(expression[j] == ')')

            rt++;

          newexpression += expression[j];

          j++;

        }

        num2 = calculate(newexpression);

        i = j-1;

      }

      if(operation == '*'){

        num = num * num2;

        operation = '0';

      }

      else if(operation == '/'){

        num = num / num2;

        operation = '0';

      }

      else{

        result += num;

        num = num2;

      }

    }

    i++;

  }

  result += num;

  return result;

}

以上就是使用C++编写四则运算计算器程序的详细步骤和代码实现。程序对用户输入错漏情况、输出有正确性保证。可根据自身需要对其进行相应修改,增加更多的功能,使其更符合个人需要。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复