আমাদের একটি অ্যারে দেওয়া আছে, এবং আমাদের কাজ হল দেয়া অ্যারেতে লিডিং জিরো বাদ দিয়ে অ্যারেটি প্রিন্ট করা।
ইনপুট : arr[] = {0, 0, 0, 1, 2, 3}
আউটপুট : 1 2 3
ইনপুট : arr[] = {0, 0, 0, 1, 0, 2, 3}
আউটপুট : 1 0 2 3
দেওয়া সমস্যায়, আমরা একটি নতুন অ্যারে বানাতে পারি যেটি পুরনো অ্যারেতে লিডিং জিরোগুলো থাকবে না।
সমাধানের পদ্ধতি
এই পদ্ধতিতে, আমরা অ্যারে ট্রাভার্স করব এবং সব নাম্বার ইনসার্ট করব কিন্তু কোনো লিডিং জিরো নয়।
উদাহরণ প্রোগ্রাম
#include <iostream>
using namespace std;
int main() {
int arr[] = {0, 0, 0, 1, 2, 0, 4};
int n = sizeof(arr) / sizeof(int); // দেয়া অ্যারের সাইজ।
int last = -1;
for (int i = 0; i < n; i++) { // প্রথম নন-জিরো এলিমেন্ট খুঁজে বের করা
if (arr[i] != 0) {
last = i;
break;
}
}
if (last == -1)
cout << "Empty\n";
else {
int b[n - last]; // নতুন অ্যারে।
for (int i = last; i < n; i++) // নতুন অ্যারেতে এলিমেন্ট ইনসার্ট করা
b[i - last] = arr[i];
for (int i = 0; i < n - last; i++) // অ্যারে প্রিন্ট করা
cout << b[i] << " ";
}
}
আউটপুট
1 2 0 4
উপরোক্ত কোডের ব্যাখ্যা
দেওয়া প্রোগ্রামে, আমরা প্রথমে অ্যারে arr ট্রাভার্স করি এবং প্রথম নন-জিরো এলিমেন্টের ইনডেক্স বের করি, যা আমরা last ভেরিয়েবলে সংরক্ষণ করি। এখন যদি ট্রাভার্সালের পর last -1 থাকে, এর মানে আমাদের পুরো অ্যারে শূন্য দিয়ে বানানো, তাই আমরা "Empty" প্রিন্ট করি।
এখন, যেহেতু আমরা প্রথম নন-জিরো এলিমেন্টের ইনডেক্স পেয়ে গেছি, আমরা আমাদের নতুন অ্যারের সাইজ নির্ধারণ করতে পারি, অর্থাৎ (n - last), এবং এখন আমরা last থেকে n-র চেয়ে কম পর্যন্ত একটি ফর লুপ চালিয়ে এই এলিমেন্টগুলো নতুন অ্যারেতে ইনসার্ট করি এবং নতুন অ্যারে প্রিন্ট করি।
উপসংহার
এই আর্টিকেলে, আমরা অ্যারে থেকে লিডিং জিরো বাদ দেওয়ার সমস্যা সমাধান করেছি। আমরা এই সমস্যায় C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি শিখেছি। আমরা একই প্রোগ্রাম অন্যান্য ল্যাঙ্গুয়েজে লিখতে পারি যেমন C, Java, Python এবং অন্যান্য ল্যাঙ্গুয়েজ। আশা করি আপনি এই আর্টিকেলটিকে সহায়ক খুঁজে পাবেন।