ถึงเวลาที่คุณจะใช้ภาษาสแต็กใหม่ของฉัน! มันเรียกว่า StackyMath นี่จะเป็นภาษาแบบสแต็กที่มีการดำเนินการ 8 รายการบนสแต็กและวิธีเพิ่มหมายเลขในสแต็ก
รายการของการดำเนินงาน:
/: แผนก. ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก*: การคูณ ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก-: การลบ ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก+: ส่วนที่เพิ่มเข้าไป. ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก^: การยกกำลัง ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก%: Modulo ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก!: แฟคทอเรียล ดำเนินการกับหมายเลขบนสุดของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็กD: ทำซ้ำหมายเลขบนสุดของสแต็ก
การดำเนินการที่กำหนดไว้ในรหัสหลอก:
/: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)
วิธีใส่ตัวเลขลงในสแต็ก:
การเพิ่มหมายเลขลงในสแต็กนั้นง่ายเพียงแค่ใส่หมายเลขดิบลงในโปรแกรมที่คุณต้องการ หากคุณต้องการใส่ตัวเลขจำนวนมากในสแต็กคุณสามารถแยกพวกเขาด้วยเครื่องหมายจุลภาค ( ,) โปรแกรมของคุณจะไม่จำเป็นต้องกระบวนการตัวเลขในการป้อนข้อมูลหากผู้ใช้ต้องการหนึ่งที่พวกเขาควรจะผลักดันจำนวนที่พวกเขาต้องการทำให้ไร้ผลศูนย์และ- -ตัวเลขในอินพุตของโปรแกรมยังถูก จำกัด ด้วยจำนวนเต็มบวก
การป้อนข้อมูล:
โปรแกรมของคุณควรใช้อินพุตในบรรทัดคำสั่งหรือจาก std in อินพุตจะประกอบด้วยตัวเลขเท่านั้น (ไม่มีเครื่องหมายทางวิทยาศาสตร์หรือทศนิยม) คั่นด้วย ,ที่จำเป็น
เอาท์พุท:
โปรแกรมของคุณควรพิมพ์หมายเลขที่ด้านบนสุดของสแต็ก
กรณีข้อผิดพลาด:
StackUnderflowException!!!หากโปรแกรมพยายามมากกว่าป๊อปสแต็คที่คุณควรพิมพ์- หากคุณมีการหารด้วยศูนย์ให้พิมพ์
DivisionByZeroException!!! - หากตัวเลขที่เกิน 64- บิตไม่ว่าจะเป็นการรันโปรแกรมหรือประมวลผลตัวเลขในอินพุตให้พิมพ์
NumberOverflowException!!! - หากคุณได้จำนวนลบที่ด้านบนสุดของสแต็กและคุณต้องทำแฟกทอเรียลให้พิมพ์
NegativeFactorialException!!! - หากคุณมีหมายเลขจุดลอยตัวที่ส่วนบนสุดของสแต็กและการดำเนินการต่อไปคือแฟคทอเรียลให้พิมพ์
FloatingFactorialException!!! - หากไม่มีตัวเลขอยู่ในสแต็กเมื่อโปรแกรมออก (เช่นโปรแกรมว่างเปล่า) พิมพ์
EmptyProgram!!!
หมายเหตุ:
- ข้อผิดพลาดทั้งหมดที่ส่งออกไปควรมีข้อผิดพลาดหรือใกล้เคียงที่สุด
- ตัวเลขทั้งหมดถูก จำกัด ให้เป็นทศนิยม 64 บิต
โปรแกรมตัวอย่าง:
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!!!
(ฉันสามารถเพิ่มมากขึ้นถ้าจำเป็น)
654,489,48,43/5*7D+-*%77.6875ควรกลับ ( 43/48*5-(7+7)ควรเป็น(7+7)-43/48*5)
!เป็นF)