आपके लिए मेरी नई स्टैक आधारित भाषा को लागू करने का समय है! इसे स्टैकीमैथ कहा जाता है। यह स्टैक पर 8 संचालन और स्टैक पर संख्याओं को जोड़ने के तरीकों के साथ एक स्टैक आधारित भाषा होगी।
संचालन की सूची:
/
: विभाजन। स्टैक के शीर्ष 2 नंबरों पर प्रदर्शन किया। स्टैक पर परिणाम वापस धक्का देता है।*
: गुणन। स्टैक के शीर्ष 2 नंबरों पर प्रदर्शन किया। स्टैक पर परिणाम वापस धक्का देता है-
: घटाव। स्टैक के शीर्ष 2 नंबरों पर प्रदर्शन किया। स्टैक पर परिणाम वापस धक्का देता है+
: जोड़। स्टैक के शीर्ष 2 नंबरों पर प्रदर्शन किया। स्टैक पर परिणाम वापस धक्का देता है^
: घातांक। स्टैक के शीर्ष 2 नंबरों पर प्रदर्शन किया। स्टैक पर परिणाम वापस धक्का देता है%
: मोदुलो। स्टैक के शीर्ष 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 से इनपुट लेना चाहिए। इनपुट में केवल संख्या (कोई वैज्ञानिक संकेतन या दशमलव) की ,
आवश्यकता के अनुसार सीमांकित नहीं किया जाएगा , और ऊपर वर्णित संचालन।
आउटपुट:
आपके प्रोग्राम को स्टैक के शीर्ष पर नंबर प्रिंट करना चाहिए।
त्रुटि मामले:
- यदि प्रोग्राम स्टैक को ओवर-पॉप करने की कोशिश करता है, तो आपको प्रिंट करना चाहिए
StackUnderflowException!!!
। - यदि आपके पास शून्य से विभाजन है, तो प्रिंट करें
DivisionByZeroException!!!
- यदि एक संख्या जो 64-बिट से अधिक है, या तो प्रोग्राम को निष्पादित करते समय या इनपुट में एक नंबर को संसाधित करते हुए, प्रिंट करें
NumberOverflowException!!!
- यदि किसी तरह आपको स्टैक के शीर्ष पर एक ऋणात्मक संख्या मिलती है और आपको एक भाज्य करने की आवश्यकता है, तो प्रिंट करें
NegativeFactorialException!!!
- यदि आपके पास स्टैक के शीर्ष पर एक फ्लोटिंग पॉइंट नंबर है और अगला ऑपरेशन फैक्टरियल है, तो प्रिंट करें
FloatingFactorialException!!!
- यदि प्रोग्राम से बाहर निकलने पर कोई संख्या स्टैक पर नहीं है (यानी प्रोग्राम खाली था) प्रिंट
EmptyProgram!!!
टिप्पणियाँ:
- सभी त्रुटि आउटपुट को yo std या निकटतम समतुल्य मिलना चाहिए।
- सभी नंबर 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
) कर सकता था।