কম্পিউটার

পরিবর্তনশীল-দৈর্ঘ্য অ্যারে ব্যবহার প্রদর্শনের জন্য সি প্রোগ্রাম


ধরুন আমরা একটি লাইব্রেরি সিস্টেম তৈরির দায়িত্বে আছি যা লাইব্রেরিতে বিভিন্ন ক্রিয়াকলাপ নিরীক্ষণ করে এবং জিজ্ঞাসা করে। আমাদের এখন তিনটি ভিন্ন কমান্ড প্রয়োগ করতে বলা হয়েছে যা নিম্নলিখিত −

সম্পাদন করে
  • কমান্ড 1 ব্যবহার করে, আমরা শেলফ x এ y পৃষ্ঠা সহ একটি বইয়ের সন্নিবেশ রেকর্ড করতে পারি।

  • কমান্ড 2 ব্যবহার করে, আমরা শেলফ x এ y-ম বইয়ের পৃষ্ঠা নম্বর প্রিন্ট করতে পারি।

  • কমান্ড 3 ব্যবহার করে, আমরা শেলফ x এ বইয়ের সংখ্যা প্রিন্ট করতে পারি।

এই ফরম্যাটে {কমান্ড টাইপ, x, y} কমান্ডগুলি আমাদেরকে 2D অ্যারে হিসাবে দেওয়া হয়েছে। যদি কোন y মান না থাকে, মানটি ডিফল্ট 0 এ থাকবে। আমরা প্রদত্ত কমান্ডের ফলাফল প্রিন্ট করি।

সুতরাং, যদি ইনপুটটি হয় তাক সংখ্যা =4, প্রশ্ন =4, input_arr ={{1, 3, 23}, {1, 4, 128}, {2, 3, 0}, {3, 4, 0 }}; তাহলে আউটপুট হবে

23
1
Command 1 inserts a book with 23 pages on shelf 3.
Command 2 inserts a book with 128 pages on shelf 4.
Command 3 prints the page number of book 0 on shelf 3.
Command 4 prints the number of books on shelf 3.

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • b :=s আকারের একটি নতুন অ্যারে
  • p :=s আকারের একটি নতুন অ্যারে
  • আরম্ভ করার জন্য i :=0, যখন i
  • b[i] :=0
  • p[i] :=একটি নতুন অ্যারে
  • loopCount শুরু করার জন্য :=0, যখন loopCount
  • qtype :=q_array[loopCount, 0]
  • যদি qtype 1 এর মত হয়, তাহলে −
    • x :=q_array[loopCount, 1]
    • y :=q_array[loopCount, 2]
    • b[x] :=b[x] + 1
    • p[x] :=p[x] দ্বারা নির্দেশিত বস্তুকে ডিলোকেট করুন এবং সাইজের একটি পয়েন্টার ফেরত দিন
    • b[x]
    • p[x, b[x] - 1] =y
  • অন্যথায় যখন qtype 2 এর মত হয়, তখন −
    • x :=q_array[loopCount, 1]
    • y :=q_array[loopCount, 2]
    • প্রিন্ট(p[x, y])
  • অন্যথায়
    • x :=q_array[loopCount, 1]
    • মুদ্রণ(b[x])
  • যদি b শূন্য না হয়, তাহলে −
    • b দ্বারা অর্জিত মেমরি নিষ্কাশন করুন
  • আরম্ভ করার জন্য i :=0, যখন i
  • যদি p[i] শূন্য না হয়, তাহলে−
    • p[i] দ্বারা অর্জিত মেমরি নিষ্কাশন করুন
  • যদি p শূন্য না হয়, তাহলে−
    • p দ্বারা অর্জিত মেমরি ডিলোকেট করুন
  • উদাহরণ

    আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    #include <stdio.h>
    #include <stdlib.h>
    
    void solve(int s, int q, int q_array[][3])
    {
          int* b;
          int** p;
       b = (int*)malloc(sizeof(int)*s);
       p = (int**)malloc(sizeof(int*)*s);
       for(int i = 0; i < s; i++)
       {
          b[i] = 0;
          p[i] = (int*)malloc(sizeof(int));
       }
       int loopCount;
       for(loopCount = 0; loopCount < q; loopCount++)
       {
          int qtype;
          qtype = q_array[loopCount][0];
          if (qtype == 1)
          {
             int x, y;
             x = q_array[loopCount][1];
                y = q_array[loopCount][2];
             b[x] += 1;
             p[x] = realloc(p[x], b[x]*sizeof(int));
             p[x][b[x] - 1] = y;
          }
          else if (qtype == 2)
          {
             int x, y;
             x = q_array[loopCount][1];
                y = q_array[loopCount][2];
             printf("%d\n", p[x][y]);
          }
          else
          {
             int x;
             x = q_array[loopCount][1];
             printf("%d\n", b[x]);
          }
       }
       if (b)
          free(b);
       for (int i = 0; i < s; i++)
          if (p[i])
             free(p[i]);
       if (p)
          free(p);
    }
    int main() {
       int input_arr[][3] = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0}, {3, 4, 0}};
          solve(4, 4, input_arr);
    }

    ইনপুট

    int input_arr[][3] = {{1, 3, 23}, {1, 4, 128}, {2, 3, 0}, {3, 4, 0}};
    solve(4, 4, input_arr);

    আউটপুট

    23
    1

    1. ম্যাট্রিক্স বিয়োগের জন্য সি প্রোগ্রাম

    2. একটি অ্যারে প্যালিনড্রোম কিনা তা পরীক্ষা করার জন্য সি প্রোগ্রাম

    3. আর্মস্ট্রং নম্বরের জন্য সি প্রোগ্রাম

    4. C/C++ এ বহুমাত্রিক অ্যারে