আমার নতুন স্ট্যাক ভিত্তিক ভাষা বাস্তবায়নের জন্য আপনার সময়! একে স্ট্যাকিমাথ বলে। এটি স্ট্যাকের উপর ভিত্তি করে 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)
কীভাবে সংখ্যাগুলিকে স্ট্যাকের দিকে ঠেলাবেন:
স্ট্যাকটিতে সংখ্যা যুক্ত করা সহজ, আপনার প্রোগ্রামে যেখানে প্রয়োজন সেখানে কেবল কাঁচা সংখ্যাটি রাখুন। যদি আপনাকে স্ট্যাকের উপর একাধিক নম্বর লাগাতে হয় তবে আপনি সেগুলি কমা ( ,
) দিয়ে আলাদা করতে পারেন । আপনার প্রোগ্রামটির ইনপুটটিতে -
নম্বরগুলি প্রক্রিয়া করার প্রয়োজন হবে না , যদি ব্যবহারকারী একটি চায় তবে তাদের যে নম্বরটি উপেক্ষিত, শূন্য এবং তারা চান তা চাপ দিতে হবে -
। প্রোগ্রামটির ইনপুটটিতে নম্বরগুলিও ইতিবাচক পূর্ণসংখ্যার জন্য সীমাবদ্ধ।
ইনপুট:
আপনার প্রোগ্রাম এসটিডি থেকে কমান্ড লাইন ইনপুট নিতে হবে, বা। ইনপুট শুধুমাত্র সংখ্যা (কোন বৈজ্ঞানিক স্বরলিপি বা দশমিক) দ্বারা সীমায়িত নিয়ে গঠিত হবে ,
হিসাবে প্রয়োজন এবং ক্রিয়াকলাপ উপরে সংজ্ঞায়িত।
আউটপুট:
আপনার প্রোগ্রামটি স্ট্যাকের শীর্ষে নম্বরটি মুদ্রণ করা উচিত।
ত্রুটির ক্ষেত্রে:
- প্রোগ্রামটি যদি স্ট্যাকটিকে ওভার-পপ করার চেষ্টা করে তবে আপনার মুদ্রণ করা উচিত
StackUnderflowException!!!
। - আপনার যদি শূন্য দ্বারা বিভাগ থাকে তবে মুদ্রণ করুন
DivisionByZeroException!!!
- যদি কোনও সংখ্যা যা -৪-বিট অতিক্রম করে, হয় প্রোগ্রামটি সঞ্চালনের সময় বা ইনপুটটিতে কোনও নম্বর প্রক্রিয়াকরণের সময়, মুদ্রণ করুন
NumberOverflowException!!!
- যদি কোনওভাবে আপনি স্ট্যাকের শীর্ষে নেতিবাচক নম্বর পান এবং আপনাকে একটি ফ্যাক্টরিয়াল, মুদ্রণ করতে হবে
NegativeFactorialException!!!
- আপনার যদি স্ট্যাকের শীর্ষে একটি ভাসমান পয়েন্ট নম্বর থাকে এবং পরবর্তী ক্রিয়াকলাপটি ফ্যাকটোরিয়াল হয় তবে মুদ্রণ করুন
FloatingFactorialException!!!
- প্রোগ্রামটি প্রস্থান করার সময় কোনও সংখ্যা স্ট্যাকের মধ্যে না থাকলে (যেমন প্রোগ্রামটি খালি ছিল) মুদ্রণ
EmptyProgram!!!
মন্তব্য:
- সমস্ত ত্রুটি আউটপুট এর yo স্ট্যান্ড এরর বা নিকটতম সমতুল্য হওয়া উচিত।
- সমস্ত সংখ্যা 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
)।