用arduino编写, 将字符数组QR_Data_Bufer3[] = {"10/2+(2+3)*2-2^2"},将字符数组里面的公式计算出结果为:37 不使用第三方库
时间: 2024-04-21 17:23:29 浏览: 191
你可以使用 Arduino 编写一个简单的代码来计算字符数组中的数学表达式。下面是一个示例代码:
```cpp
#include <Arduino.h>
// 定义一个函数,用于判断字符是否为操作符
bool isOperator(char c) {
return (c == '+' || c == '-' || c == '*' || c == '/' || c == '^');
}
// 定义一个函数,用于计算两个操作数的结果
int calculate(int operand1, int operand2, char op) {
switch(op) {
case '+':
return operand1 + operand2;
case '-':
return operand1 - operand2;
case '*':
return operand1 * operand2;
case '/':
return operand1 / operand2;
case '^':
int result = 1;
for (int i = 0; i < operand2; i++) {
result *= operand1;
}
return result;
default:
return 0; // 如果操作符不正确,则返回 0
}
}
void setup() {
Serial.begin(9600);
char QR_Data_Bufer3[] = "10/2+(2+3)*2-2^2";
int result = 0;
int operand1 = 0;
int operand2 = 0;
char currentOperator = '+';
bool isOperandNegative = false;
for (int i = 0; i < strlen(QR_Data_Bufer3); i++) {
char currentChar = QR_Data_Bufer3[i];
// 如果当前字符是数字,则将其转换为整数并更新操作数
if (isdigit(currentChar)) {
int digit = currentChar - '0';
if (isOperandNegative) {
operand2 = operand2 * 10 - digit;
} else {
operand2 = operand2 * 10 + digit;
}
}
// 如果当前字符是操作符,或者已经到达表达式的末尾,则计算上一个操作数与操作符的结果,并更新结果和操作数
else if (isOperator(currentChar) || i == strlen(QR_Data_Bufer3) - 1) {
result = calculate(result, operand2, currentOperator);
operand2 = 0;
if (currentChar == '-') {
isOperandNegative = true;
} else {
isOperandNegative = false;
currentOperator = currentChar;
}
}
}
Serial.print("Result: ");
Serial.println(result);
}
void loop() {
// 空函数
}
```
这段代码会将字符数组中的数学表达式计算出结果,并将结果通过串口输出。在这个例子中,字符数组为 "10/2+(2+3)*2-2^2",计算结果为 37。
请注意,这是一个简单的例子,仅支持四则运算和乘方运算。如果需要支持更复杂的表达式,可能需要进行更多的处理和错误检测。
阅读全文