简单的计算器c++

题目描述
小明最近在学习算式,你们可以帮他实现简单的计算器帮助他检查自己的答案是否正确吗?

具体要求如下:

一个最简单的计算器,支持 +, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。然而

1.如果出现除数为0的情况,则输出:Divided by zero!

2.如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!

输入格式
输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+, -, *, /)

输出格式
输出只有一行,一个整数,为运算结果。然而:

1.如果出现除数为0的情况,则输出:Divided by zero!

2.如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!

样例
输入样例
1 2 +
输出样例
3
数据范围与提示
0<a,b<10的五次方
当操作符为除号时,确保a能被b整除!

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a,b;
	char c;
	cin>>a>>b>>c;
	switch(c){
		case '+':cout<<a+b;break;
		case '-':cout<<a-b;break;
		case '*':cout<<a*b;break;
		case '/':
			if(b==0){
				cout<<"Divided by zero!";
				break;
			}
			else{
				cout<<a/b;
				break;
			}
		default:cout<<"Invalid operator!";break;
	}
	return 0;
}```

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的基于栈实现的计算器,可以进行加减乘除的计算。 ```cpp #include <iostream> #include <stack> #include <string> using namespace std; int priority(char op) { if (op == '+' || op == '-') { return 1; } else if (op == '*' || op == '/') { return 2; } else { return 0; } } int calculate(int num1, int num2, char op) { switch (op) { case '+': return num1 + num2; case '-': return num1 - num2; case '*': return num1 * num2; case '/': return num1 / num2; default: return 0; } } int main() { stack<int> num_stack; stack<char> op_stack; string input; cout << "请输入一个表达式:" << endl; cin >> input; for (int i = 0; i < input.length(); i++) { char c = input[i]; if (isdigit(c)) { int num = c - '0'; while (i + 1 < input.length() && isdigit(input[i + 1])) { num = num * 10 + input[i + 1] - '0'; i++; } num_stack.push(num); } else if (c == '(') { op_stack.push(c); } else if (c == ')') { while (op_stack.top() != '(') { char op = op_stack.top(); op_stack.pop(); int num2 = num_stack.top(); num_stack.pop(); int num1 = num_stack.top(); num_stack.pop(); int result = calculate(num1, num2, op); num_stack.push(result); } op_stack.pop(); } else { while (!op_stack.empty() && priority(op_stack.top()) >= priority(c)) { char op = op_stack.top(); op_stack.pop(); int num2 = num_stack.top(); num_stack.pop(); int num1 = num_stack.top(); num_stack.pop(); int result = calculate(num1, num2, op); num_stack.push(result); } op_stack.push(c); } } while (!op_stack.empty()) { char op = op_stack.top(); op_stack.pop(); int num2 = num_stack.top(); num_stack.pop(); int num1 = num_stack.top(); num_stack.pop(); int result = calculate(num1, num2, op); num_stack.push(result); } cout << "计算结果为:" << num_stack.top() << endl; return 0; } ``` 该计算器采用了两个栈,一个用于存放数字,另一个用于存放运算符。在读入表达式字符串时,遇到数字则直接入数字栈,遇到左括号则直接入运算符栈,遇到右括号则弹出运算符栈中的运算符,直到遇到左括号为止,并将这段括号内的表达式进行计算并将结果入数字栈。对于其他运算符,则需要判断其优先级,如果当前运算符的优先级低于栈顶运算符的优先级,则需要先将栈顶运算符弹出并进行计算,直到栈顶运算符的优先级低于当前运算符为止,然后将当前运算符入运算符栈。最后,将剩余的运算符全部弹出并进行计算,得到最终的计算结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值