কম্পিউটার টিউটোরিয়াল

কনভার্সন ছাড়া সংখ্যার সব সাবস্ট্রিং প্রিন্ট করা C++-তে


এই সমস্যায়, একটি পূর্ণসংখ্যা n দেওয়া থাকে। এবং আমাদের সেই সংখ্যার সব সাবস্ট্রিং প্রিন্ট করতে হবে কিন্তু স্ট্রিংয়ে কনভার্ট করা যাবে না অর্থাৎ আমরা ইন্টিজারকে স্ট্রিং বা অ্যারেতে কনভার্ট করতে পারব না।

উদাহরণ দিয়ে বুঝি:

ইনপুট: number = 5678 আউটপুট: 5, 56, 567, 5678, 6, 67, 678, 7, 78, 8

এই সমস্যাটি সমাধান করতে, আমাদের ম্যাথেম্যাটিক্যাল লজিক ব্যবহার করতে হবে। এখানে, আমরা সবচেয়ে σημαντपूर्ण বিট (MSB) প্রথমে প্রিন্ট করব, তারপরuccessive বিটগুলো প্রিন্ট করব।

অ্যালগরিদম

ধাপ ১: ডিজিট সংখ্যা অনুযায়ী ১০-এর পাওয়ার নম্বর নিন। ধাপ ২: রিকার্শিভলি ভ্যালু প্রিন্ট করুন এবং সংখ্যাকে ১০ দিয়ে ভাগ করুন এবং পুনরাবৃত্তি করুন যতক্ষণ না সংখ্যা ০ হয়। ধাপ ৩: সংখ্যার MSB বাদ দিন এবং এই সংখ্যার সাথে ধাপ ২ পুনরাবৃত্তি করুন। ধাপ ৪: সংখ্যা ০ হয়ে যাওয়া পর্যন্ত পুনরাবৃত্তি করুন।

C++ উদাহরণ

#include <iostream> #include<math.h> using namespace std; void printSubNumbers(int n) ; int main(){ int n = 6789; cout<<"The number is "<<n<<" and the substring of number are :\n"; printSubNumbers(n); return 0; } void printSubNumbers(int n){ int s = log10(n); int d = (int)(pow(10, s) + 0.5); int k = d; while (n) { while (d) { cout<<(n / d)<<" "; d = d / 10; } n = n % k; k = k / 10; d = k; } }

আউটপুট

সংখ্যা ৬৭৮৯ এবং সংখ্যার সাবস্ট্রিংগুলো হলো:

6 67 678 6789 7 78 789 8 89 9
  1. C++-এ একটি সংখ্যা N-এর বিটওয়াইজ AND সাবসেট প্রিন্ট করুন

  2. C++-এ ব্র্যাকেট নম্বর প্রিন্ট করুন

  3. C++ প্রোগ্রাম: কন্ডিশনাল স্টেটমেন্ট ছাড়া "Even" বা "Odd" প্রিন্ট

  4. পাইথনে লুপ ছাড়া নাম্বার সিরিজ প্রিন্ট করা (রিকার্শন)