Tôi đang thực hiện các bài tập trong cuốn sách mới của Stroustrup "Programming Principles and Practice Using C++" và tự hỏi liệu có ai trên SO đã thực hiện chúng và sẵn sàng chia sẻ kiến thức không? Cụ thể về máy tính được phát triển trong Chương 6 và 7. Ví dụ: các câu hỏi về việc thêm! toán tử và sqrt(), pow() vv Tôi đã làm những điều này nhưng tôi không biết liệu giải pháp mà tôi có là "tốt" để làm mọi thứ, và không có giải pháp nào được xuất bản trên trang web của Bjarne. Tôi muốn biết nếu tôi đi đúng hướng. Có lẽ chúng ta có thể tạo một wiki cho các bài tập?Thêm! toán tử và sqrt(), pow() vv cho ứng dụng ví dụ máy tính
Về cơ bản tôi có trình phân tích cú pháp mã thông báo. Nó đọc một char tại một thời điểm từ cin. Nó có nghĩa là để tokenise biểu thức như 5 * 3 + 1 và nó hoạt động tuyệt vời cho điều đó. Một trong các bài tập là thêm một hàm sqrt(). Vì vậy, tôi sửa đổi mã tokenising để phát hiện "sqrt (" và sau đó trở về một đối tượng Token đại diện sqrt.Trong trường hợp này tôi sử dụng char 's' .Đây có phải là cách những người khác sẽ làm điều đó? Nếu tôi cần phải thực hiện tội lỗi()? những tuyên bố trường hợp sẽ nhận được lộn xộn.
char ch;
cin >> ch; // note that >> skips whitespace (space, newline, tab, etc.)
switch (ch) {
case ';': // for "print"
case 'q': // for "quit"
case '(':
case ')':
case '+':
case '-':
case '*':
case '/':
case '!':
return Token(ch); // let each character represent itself
case '.':
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
{
cin.putback(ch); // put digit back into the input stream
double val;
cin >> val; // read a floating-point number
return Token('8',val); // let '8' represent "a number"
}
case 's':
{
char q, r, t, br;
cin >> q >> r >> t >> br;
if (q == 'q' && r == 'r' && t == 't' && br == '(') {
cin.putback('('); // put back the bracket
return Token('s'); // let 's' represent sqrt
}
}
default:
error("Bad token");
}
Chỉ cần đăng mã của bạn ở đây và rất nhiều người sẽ vui lòng cho bạn biết những gì có thể được cải thiện. Trang web này là tất cả wiki bạn cần. :) – jalf
Ok tôi sẽ sớm cập nhật! – PowerApp101
Chưa từng thấy bài tập, nhưng có vẻ lạ là bạn cố gắng tăng gấp đôi số điểm chữ số và dấu thập phân mà bạn gặp phải. – jbasko