Đưa ra kết quả của một phép với đầu vào là dãy phép tính được định dạng String

Xin chào các pro
Em có một câu hỏi là nếu đầu vào là dãy các phép tính được định dạng string làm thế nào để tính được phép tính đó ạ.

Input: Có dang: “At1Bt2C” (Với t1 và t2 là các phép toán +,-,*)
Output: Là số nguyên ghi kết quả của phép tính trên

VD:
Input: “2+3*4”

Em chưa nghĩ ra cách nào để giải quyết bài toán ạ. Rất mong mọi người xây dựng và hướng dẫn

Cách cùi bắp là cắt chuỗi - cast.

Nhưng mà nhân chia trước cộng trừ sau nữa

Kí pháp Ba Lan để đổi ra stack rồi tính :slight_smile:

2 Likes

Làm thế nào để ép kiểu một kí tự trong mảng String sang int vậy ạ ?

Nếu ansi string “0003” chuyển sang int thì dung hàm atoi (Ansi string to int);

std::string input = "0003";
int retval = atoi(input.c_str());

Nếu là wide string thì chuyển về ansi string rồi làm như bước trên:

std::wstring input = L"0003";
std::string convert(input.begin(), input.end());
int retval = atoi(convert);

Một ký tự trong mảng string sẽ là 1 char hoặc 1 wchar_t.

std::string a_input = "0003";
char c = a_input[0]; // lấy ký tự đầu tiên sẽ trả về là "0';

int retval1 = static_cast<int>(c); // = 48 
int retval2 = static_cast<int>(c-48); // = 0
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?