Trong bài toán này, chúng ta được cho một mảng arr[] gồm n ký tự đại diện cho một biểu thức. Nhiệm vụ là đánh giá biểu thức mảng chỉ chứa số, dấu + và -.
Biểu thức chỉ bao gồm các số, ký tự '+' và '-'.
Ví dụ minh họa
Đầu vào: arr = {"5", "+", "2", "-", "8", "+", "9"}
Đầu ra: 8
Giải thích:
Biểu thức: 5 + 2 - 8 + 9 = 8
Phương pháp giải
Giải pháp đơn giản là thực hiện tuần tự các phép toán. Phần tử đầu tiên của mảng là số đầu tiên. Sau đó, duyệt qua mảng với bước nhảy 2 (bỏ qua toán tử), chuyển đổi chuỗi số thành nguyên và thực hiện cộng hoặc trừ dựa trên toán tử ngay trước nó.
Chương trình minh họa
#include <bits/stdc++.h>
using namespace std;
int solveExp(string arr[], int n) {
if (n == 0) return 0;
int result = stoi(arr[0]); // Số đầu tiên
// Duyệt từ chỉ số 2, bước nhảy 2 (các vị trí số)
for (int i = 2; i < n; i += 2) {
int value = stoi(arr[i]);
if (arr[i - 1] == "+")
result += value;
else // arr[i - 1] == "-"
result -= value;
}
return result;
}
int main() {
string arr[] = { "5", "-", "3", "+", "8", "-", "1" };
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Kết quả của phương trình là " << solveExp(arr, n);
return 0;
}
Đầu ra
Kết quả của phương trình là 9