Đư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

c++

(Đạt Phạm) #1

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


(Văn Dương) #2

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


(Đạt Phạm) #3

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


(rogp10) #4

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


(Đạt Phạm) #5

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


(Văn Dương) #6

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?