Thời gian để bạn thực hiện ngôn ngữ dựa trên ngăn xếp mới của tôi! Nó được gọi là StackyMath. Đây sẽ là một ngôn ngữ dựa trên ngăn xếp với 8 thao tác trên ngăn xếp và các cách để thêm số vào ngăn xếp.
Danh sách các hoạt động:
/
: Phòng. Thực hiện trên 2 số trên cùng của ngăn xếp. Đẩy kết quả trở lại trên ngăn xếp.*
: Phép nhân. Thực hiện trên 2 số trên cùng của ngăn xếp. Đẩy kết quả trở lại trên ngăn xếp-
: Phép trừ. Thực hiện trên 2 số trên cùng của ngăn xếp. Đẩy kết quả trở lại trên ngăn xếp+
: Thêm vào. Thực hiện trên 2 số trên cùng của ngăn xếp. Đẩy kết quả trở lại trên ngăn xếp^
: Lũy thừa. Thực hiện trên 2 số trên cùng của ngăn xếp. Đẩy kết quả trở lại trên ngăn xếp%
: Modulo. Thực hiện trên 2 số trên cùng của ngăn xếp. Đẩy kết quả trở lại trên ngăn xếp!
: Yếu tố. Thực hiện trên số đầu trên ngăn xếp. Đẩy kết quả trở lại trên ngăn xếpD
: Sao y số trên cùng trên ngăn xếp
Các hoạt động được xác định trong mã giả:
/
:push(pop divided by pop)
*
:push(pop times pop)
-
:push(pop minus pop)
+
:push(pop plus pop)
^
:push(pop to the pop)
%
:push(pop mod pop)
!
:push(factorial pop)
D
:t = pop; push(t); push(t)
Cách đẩy số vào ngăn xếp:
Thêm số vào ngăn xếp rất dễ dàng, chỉ cần đặt số nguyên trong chương trình của bạn ở nơi bạn cần. Nếu bạn cần đặt nhiều số trên ngăn xếp, bạn có thể tách chúng bằng dấu phẩy ( ,
). Chương trình của bạn sẽ không cần xử lý các -
số trong đầu vào, Nếu người dùng muốn một số họ nên đẩy số họ muốn phủ định, 0 và-
. Các số trong đầu vào của chương trình cũng bị hạn chế đối với các số nguyên dương.
Đầu vào:
Chương trình của bạn nên lấy đầu vào trên dòng lệnh hoặc từ std in. Đầu vào sẽ chỉ bao gồm các số (không có ký hiệu khoa học hoặc số thập phân) được phân cách bởi ,
khi cần và các thao tác được xác định ở trên.
Đầu ra:
Chương trình của bạn nên in số trên đầu ngăn xếp.
Các trường hợp lỗi:
- Nếu chương trình cố gắng bật quá nhiều ngăn xếp, bạn nên in
StackUnderflowException!!!
. - Nếu bạn có số chia cho 0, hãy in
DivisionByZeroException!!!
- Nếu một số vượt quá 64 bit, trong khi thực hiện chương trình hoặc xử lý một số trong đầu vào, hãy in
NumberOverflowException!!!
- Nếu bằng cách nào đó bạn nhận được một số âm trên đầu ngăn xếp và bạn cần làm một giai thừa, in
NegativeFactorialException!!!
- Nếu bạn có số dấu phẩy động trên đỉnh của ngăn xếp và thao tác tiếp theo là giai thừa, hãy in
FloatingFactorialException!!!
- Nếu không có số nào trên ngăn xếp khi chương trình thoát (tức là chương trình trống) in
EmptyProgram!!!
Ghi chú:
- Tất cả đầu ra lỗi sẽ có yo std err hoặc tương đương gần nhất.
- Tất cả các số bị giới hạn ở điểm nổi 64 bit.
Chương trình ví dụ:
50,47* -> 2350
50,47/ -> 0.94
100,8! -> 40320
100D* -> 10000
! -> StackUnderflowException!!!
5,2/! -> FloatingFactorialException!!!
4,3!2*/ -> 3
654,489,48,43/5*7D+-*% -> 77.68749999999909
-> EmptyProgram!!!
(Tôi có thể thêm nhiều hơn nếu cần)
654,489,48,43/5*7D+-*%
nên trở về 77.6875
. ( 43/48*5-(7+7)
nên là (7+7)-43/48*5
)
!
sangF
).