用c++设计一个计算器
时间: 2024-10-14 21:11:37 浏览: 23
在C++中设计一个简单的命令行计算器可以分为以下几个步骤:
1. 定义数据结构:首先创建一个基础的数据结构,如`Calculator`类,包含两个成员变量表示操作数和运算符。
```cpp
class Calculator {
private:
double num1;
char operator_;
double num2; // 如果需要处理两个操作数
public:
// 构造函数接收初始值
Calculator(double n1, char op) : num1(n1), operator_(op) {}
};
```
2. 实现基本运算:定义一些函数来处理加减乘除等基本运算。如果只支持单操作数,只需要一个`calculate()`方法;如果支持双操作数,还需要`setSecondOperand()`。
```cpp
void Calculator::calculate() {
switch (operator_) {
case '+':
std::cout << "Result: " << num1 + calculateSecondOperand();
break;
case '-':
std::cout << "Result: " << num1 - calculateSecondOperand();
break;
case '*':
std::cout << "Result: " << num1 * calculateSecondOperand();
break;
case '/':
if (calculateSecondOperand() != 0)
std::cout << "Result: " << num1 / calculateSecondOperand();
else
std::cerr << "Error: Division by zero is not allowed.";
break;
default:
std::cerr << "Invalid operator!";
break;
}
}
double Calculator::calculateSecondOperand() {
return num2;
}
```
3. 用户输入处理:创建一个主函数,循环读取用户输入的数字和运算符,并创建`Calculator`实例进行计算。
```cpp
int main() {
double num1, num2 = 0;
char operator_;
while (true) {
std::cout << "Enter number 1 or 'q' to quit: ";
std::cin >> num1;
if (std::cin.fail()) {
std::cerr << "Invalid input. Please try again.\n";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
continue;
}
if (num1 == 'q') break;
std::cout << "Enter an operator (+,-,*,/): ";
std::cin >> operator_;
if (std::cin.fail()) {
std::cerr << "Invalid operator. Please try again.\n";
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
continue;
}
Calculator calculator(num1, operator_);
if (std::isdigit(operator_)) { // 如果是单数字符,认为是第二个操作数
std::cout << "Enter number 2: ";
std::cin >> num2;
if (std::cin.fail()) {
// 处理错误输入...
}
} else {
calculator.calculate(); // 没有第二个操作数,直接计算
}
}
return 0;
}
```
阅读全文