ইনপুট হিসাবে আমাদের একটি পূর্ণসংখ্যা সংখ্যা দেওয়া হয়েছে। লক্ষ্য স্ট্যাক ব্যবহার করে সংখ্যার বিপরীত খুঁজে বের করা।
স্ট্যাক :- একটি স্ট্যাক হল C++ এর একটি ডেটা স্ট্রাকচার যা LIFO ( Last in First Out) পদ্ধতিতে ডেটা সংরক্ষণ করে। স্ট্যাকের প্রধান কাজগুলি হল-:
ঘোষণা-:স্ট্যাক
-
top() ব্যবহার করে শীর্ষ খোঁজা হচ্ছে . ফাংশন stck.top() stck এ শীর্ষ উপাদানের রেফারেন্স প্রদান করে
-
pop() ব্যবহার করে শীর্ষ সরানো হচ্ছে . ফাংশন stck থেকে শীর্ষস্থানীয় উপাদান সরিয়ে দেয়
-
পুশ() ব্যবহার করে শীর্ষে উপাদান যোগ করা হচ্ছে . ফাংশন stck.push( মান ) স্ট্যাকে আইটেম মান যোগ করে। মান stck টাইপ হওয়া উচিত।
-
empty() ব্যবহার করে স্ট্যাক্সক খালি কিনা তা পরীক্ষা করুন . স্ট্যাক খালি থাকলে ফাংশন stck.empty() true ফেরত দেয়।
উদাহরণ
ইনপুট − সংখ্যা =33267
আউটপুট − সংখ্যার বিপরীত হল:76233
ব্যাখ্যা −
প্রথমে আমরা সমস্ত উপাদানকে স্ট্যাক করার জন্য ঠেলে দেব
7 - 6 - 2 - 3 - 3 ← শীর্ষ
7 * 10000 + 6 * 1000 + 2*100 + 3*10 + 3*1 ←
=70000 + 6000 + 200 + 30 + 3 ←
=76233
ইনপুট − সংখ্যা =111000
আউটপুট − সংখ্যার বিপরীত হল:111
ব্যাখ্যা −
প্রথমে আমরা সমস্ত উপাদানকে স্ট্যাক করার জন্য ঠেলে দেব
0 - 0 - 0 - 1 - 1 - 1 ← শীর্ষ
0 * 100000 + 0 * 10000 + 0*1000 + 1*100 + 1*10 + 1*1 ←
=0 + 0 + 0 + 100 + 10 + 1 ←
=111
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
এই পদ্ধতিতে আমরা প্রথমে ইনপুট সংখ্যার অবশিষ্টাংশ নেব এবং স্ট্যাকের দিকে চাপ দিব এবং সংখ্যা 0 না হওয়া পর্যন্ত সংখ্যা 10 কমিয়ে ফেলব। এইভাবে স্ট্যাকটি প্রথম সংখ্যা হিসাবে শীর্ষ দিয়ে পূর্ণ হবে।
-
ইনপুট নম্বর নিন।
-
Stack
ব্যবহার করে পূর্ণসংখ্যার জন্য খালি স্ট্যাক নিনstck. -
ফাংশন pushDigts(int num1) num1 নেয় এবং উপরে প্রথম ডিজিট সহ স্ট্যাকের সাথে যোগ করে।
-
পরিবর্তনশীল হিসাবে rem নিন।
-
একটি সময় লুপ ব্যবহার করে num1 অ-শূন্য কিনা তা পরীক্ষা করুন, যদি সত্য হয় তাহলে rem=num1%10 সেট করুন।
-
স্ট্যাক করতে rem চাপুন।
-
2য় ডিজিটের জন্য num1 10 দ্বারা কমিয়ে দিন ইত্যাদি।
-
এখন revrseNum().
ফাংশন দিয়ে স্ট্যাকের উপাদান ব্যবহার করে সংখ্যাটি বিপরীত করুন -
ভেরিয়েবল revrs, topp, temp, i.
নিন -
স্ট্যাক খালি না থাকা অবস্থায়
-
শীর্ষস্থানীয় উপাদানটিকে topp=stck.top().
হিসাবে নিন -
stck.pop().
ব্যবহার করে স্ট্যাক হ্রাস করুন -
temp=topp*i.
সেট করুন -
রিভার্সে তাপমাত্রা যোগ করুন।
-
100 এর গুণে i*10 দ্বারা i বাড়ান।
-
শেষে ইনপুট সংখ্যার বিপরীতটি revrs হিসাবে ফেরত দিন।
-
প্রিন্ট ফলাফল প্রধান ভিতরে প্রাপ্ত.
উদাহরণ
#include <bits/stdc++.h> using namespace std; stack <int> stck; void pushDigts(int num1){ int rem; while (num1 > 0){ rem=num1 % 10; stck.push(rem); num1 = num1 / 10; } } int revrseNum(){ int revrs = 0; int i = 1; int temp; int topp; while (!stck.empty()){ topp=stck.top(); stck.pop(); temp=topp*i; revrs = revrs + temp; i *= 10; } return revrs; } int main(){ int Num = 43556; pushDigts(Num); cout<<"Reverse of number is: "<<revrseNum(); return 0; }
আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে
Reverse of number is: 65534