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

সি ভাষায় N মুভের পর অ্যারেতে ১-এর সংখ্যা গণনা

আমাদের N সাইজের একটি অ্যারে দেওয়া আছে। অ্যারেটি প্রাথমিকভাবে সব ০ দিয়ে ভরা। টাস্ক হলো Nটি মুভের পর অ্যারেতে কতগুলো ১ আছে সেটি গণনা করা। প্রতিটি N-তম মুভের একটি নিয়ম রয়েছে। নিয়মগুলো:

  • ১লা মুভ: ১, ২, ৩, ৪... পজিশনের এলিমেন্ট পরিবর্তন করা
  • ২য় মুভ: ২, ৪, ৬, ৮... পজিশনের এলিমেন্ট পরিবর্তন করা
  • ৩য় মুভ: ৩, ৬, ৯, ১২... পজিশনের এলিমেন্ট পরিবর্তন করা

শেষ অ্যারেতে ১-এর সংখ্যা বের করুন।

উদাহরণ ১

ইনপুট: Arr[] = {0,0,0,0}, N=4

আউটপুট: N মুভের পর অ্যারেতে ১-এর সংখ্যা - ২

ব্যাখ্যা: মুভ অনুযায়ী অ্যারে পরিবর্তন:

মুভ ১: {1,1,1,1}
মুভ ২: {1,0,1,0}
মুভ ৩: {1,0,0,1}  // নোট: এখানে ৩ থাকা উচিত নয়, ১ থাকবে
মুভ ৪: {1,0,0,1}
শেষ অ্যারেতে ১-এর সংখ্যা ২।

উদাহরণ ২

ইনপুট: Arr[] = {0,0,0,0,0,0}, N=6

আউটপুট: N মুভের পর অ্যারেতে ১-এর সংখ্যা - ২

ব্যাখ্যা: মুভ অনুযায়ী অ্যারে পরিবর্তন (৭টি এলিমেন্ট দেখানো হয়েছে, কিন্তু N=6):

মুভ ১: {1,1,1,1,1,1}
মুভ ২: {1,0,1,0,1,0}
মুভ ৩: {1,0,0,1,0,0}
মুভ ৪: {1,0,0,0,1,0}
মুভ ৫: {1,0,0,0,0,1}
মুভ ৬: {1,0,0,0,0,0} // একদম শেষে ১ থাকবে?
শেষ অ্যারেতে ১-এর সংখ্যা ২।

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • ইন্টিজার অ্যারে Arr[] ০ দিয়ে আরম্ভিক라이জড এবং ইন্টিজার N নেওয়া হয়েছে।
  • Onecount ফাংশন Arr[] এবং এর সাইজ N ইনপুট নেয় এবং N মুভের পর ১-এর সংখ্যা রিটার্ন করে।
  • বাহ্যিক for লুপ ১ থেকে N পর্যন্ত চলে (প্রতিটি i i-তম মুভ প্রতীকান্ন)।
  • আন্তরিক for লুপ ০th ইনডেক্স থেকে অ্যারের শেষ পর্যন্ত চলে।
  • প্রতিটি i-তম মুভের জন্য, যদি ইনডেক্স j, i-র গুণিতক হয় (j%i==0), তাহলে সে পজিশনে ০ কে ১ ও ১ কে ০ এ কনভার্ট করা হয়।
  • এই প্রক্রিয়া প্রতিটি i-এর জন্য অ্যারের শেষ পর্যন্ত চলে।
  • নোট: ইনডেক্স i=1, j=1 থেকে শুরু হয় কিন্তু অ্যারে ইনডেক্স ০ থেকে N-1। এই কারণে arr[j-1] প্রতিবার কনভার্ট করা হয়।
  • শেষে পুরো অ্যারে ট্রাভার্স করে ১-এর সংখ্যা কাউন্ট করা হয়।
  • কাউন্ট রিটার্ন করা হয়।

উদাহরণ কোড

#include <stdio.h>
int Onecount(int arr[], int N) {
    for (int i = 1; i <= N; i++) {
        for (int j = i; j <= N; j++) {
            // j যদি i দিয়ে বিভাজ্য হয়
            if (j % i == 0) {
                if (arr[j - 1] == 0)
                    arr[j - 1] = 1; // ০ কে ১ করা
                else
                    arr[j - 1] = 0; // ১ কে ০ করা
            }
        }
    }
    int count = 0;
    for (int i = 0; i < N; i++)
        if (arr[i] == 1)
            count++; // ১-এর সংখ্যা গণনা
    return count;
}
int main() {
    int size = 6;
    int Arr[6] = {0};
    printf("N মুভের পর অ্যারেতে ১-এর সংখ্যা: %d", Onecount(Arr, size));
    return 0;
}

আউটপুট

N মুভের পর অ্যারেতে ১-এর সংখ্যা: 2
  1. C#-এ বাইট অ্যারের বাইট কাউন্ট করা

  2. C#-এ লিস্টের আইটেম সংখ্যা গণনা (Count Items in List)

  3. C#-এ ইনপুট নম্বরগুলোর মধ্যে ১ এর সংখ্যা গণনা

  4. C#-এ স্ট্রিংয়ের শব্দ সংখ্যা গণনা