মডিউল ৯ঃ অ্যারে অপারেশন
মডিউল ৯-০: সূচনা
ধীরে ধীরে তোমরা প্রোগ্রামিং শেখার রাস্তা ধরে আগাচ্ছো। এখন মোটামুটি বেসিক কিছু কন্সেপ্ট তোমাদের কাছে ক্লিয়ার এবং সেই রিলেটেড প্রবলেমও সলভ করতেছো। গত উইকে তোমাদের array এর সাথে পরিচয় করিয়ে দেওয়া হয়েছে। তোমরা জানো এটার কি কাজ কিভাবে ডিক্লেয়ার করতে হয়। আজকে এই array কে আমরা কাটাছেঁড়া করবো।
সো এতোক্ষণে বুঝে গিয়েছো আমরা array কে অপারেশন থিয়েটারে নিয়ে এসেছি। এখন তার অপারেশন এর সময়। অর্থাৎ আজকের মডিউলে তোমাদের array অপারেশন শেখানো হবে। কিভাবে কোন একটা এরে থেকে কোন একটা ইলিমেন্ট রিমুভ এবং ইনসার্ট করতে হয়। কিভাবে এরের ইলিমেন্ট গুলোকে রিভার্স অর্ডারে সাজাতে হয়। কিভাবে দুইটা এরের ইলিমেন্ট গুলো কপি করতে হয় এরকম এক্সাইটিং সব অপারেশন শিখে আজকে তোমরা হয়ে যাবে array এর সার্জন।
মডিউল ৯-১ + ৯-২ + ৯-৩: ইনসার্ট ইলিমেন্ট
অ্যারেতে একটি Element ইনসার্ট:
অ্যারেতে আমরা সেট অফ ডাটা স্টোর করি। এই আর্টিকেলে আমরা দেখব, অ্যারেতে যেকোন Position এ Element Insert করে কিভাবে।
Code (Insert Element in Array):
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int ar[n+1];
for(int i=0; i<n; i++)
{
scanf("%d", &ar[i]);
}
int pos,val;
scanf("%d %d", &pos, &val);
for(int i=n; i>=pos+1; i--)
{
ar[i]=ar[i-1];
}
ar[pos]=val;
for(int i=0; i<=n; i++)
{
printf("%d ", ar[i]);
}
return 0;
}Explanation:
int n;
scanf("%d", &n);এই লাইনে, ইউজার থেকে একটি পূর্ণসংখ্যা ইনপুট নেওয়া হচ্ছে এবং সেটি n ভেরিয়েবলে সংরক্ষিত হচ্ছে। এখানে scanf ফাংশন ব্যবহার করা হয়েছে যার মাধ্যমে ইউজার ইনপুট দেয়।
int ar[n+1];এই লাইনে, একটি নতুন অ্যারে তৈরি করা হচ্ছে যার সাইজ n+1।
for(int i=0; i<n; i++)
{
scanf("%d", &ar[i]);
}এই ফর লুপে, n সংখ্যক মান ইনপুট নেওয়া হচ্ছে এবং এগুলি অ্যারের ইন্ডেক্স i তে সংরক্ষিত হচ্ছে।
int pos,val;
scanf("%d %d", &pos, &val);এই লাইনে, দুটি পূর্ণসংখ্যা ইনপুট নেওয়া হচ্ছে, যার প্রথমটি হলো পজিশন (pos) এবং দ্বিতীয়টি হলো মান (val)।
for(int i=n; i>=pos+1; i--)
{
ar[i]=ar[i-1];
}এই লুপে, আমরা অ্যারের শেষ থেকে শুরু করে pos+1 এর আগের সব মানগুলি পরিবর্তন করে তাদের পরের ইনডেক্সে স্থানান্তরিত করছি। যেন প্রোগ্রাম নতুন মান ইনসার্ট করতে পারে।
ar[pos]=val;এই লাইনে, অ্যারের pos ইনডেক্সে val মান সেট করা হচ্ছে।
for(int i=0; i<=n; i++)
{
printf("%d ", ar[i]);
}এই ফর লুপে, অ্যারের সংখ্যাগুলি প্রিন্ট করা হচ্ছে।
মডিউল ৯-৪ + ৯-৫ + ৯-৬: ডিলিট or রিমুভ ইলিমেন্ট
অ্যারে থেকে ইলিমেন্ট ডিলিট করা:
- প্রকৃতপক্ষে, অ্যারে থেকে কোনো উপাদানকে সম্পূর্ণ মুছে ফেলা যায় না।
- তবে, আমরা অ্যারের উপাদানগুলিকে বাম দিকে সরিয়ে ডিলিট করার ধারণা তৈরি করতে পারি।
- এটি করার জন্য, আমরা ডিলিট করার অবস্থানের পরের সমস্ত উপাদানকে এক স্থান বাম দিকে সরিয়ে দেওয়ার প্রক্রিয়া অনুসরণ করি।
Code (Delete Element from Array):
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
int ar[n];
for(int i=0; i<n; i++)
{
scanf("%d", &ar[i]);
}
int pos;
scanf("%d", &pos);
for(int i=pos; i<n-1; i++)
{
ar[i]=ar[i+1];
}
for(int i=0; i<n-1; i++)
{
printf("%d ", ar[i]);
}
return 0;
}Explanation:
int n;
scanf("%d", &n);এই লাইনে একটি পূর্ণসংখ্যা ইনপুট দেওয়া হচ্ছে যা n ভেরিয়েবলে সংরক্ষিত হবে।
int ar[n];এই লাইনে ar নামক একটি অ্যারে ডিক্লেয়ার করা হয়েছে যা এর সাইজ n হিসাবে ধরা হয়েছে।
for(int i=0; i<n; i++)
{
scanf("%d", &ar[i]);
}এই লুপে n সংখ্যক মান ইনপুট নিবে এবং এগুলি ar অ্যারেতে সংরক্ষিত হয়।
int pos;
scanf("%d", &pos);একটি পূর্ণসংখ্যা ইনপুট দেয়া হচ্ছে যা pos ভেরিয়েবলে সংরক্ষিত হবে।
for(int i=pos; i<n-1; i++)
{
ar[i]=ar[i+1];
}এই লুপে অ্যারে ar থেকে পজিশন pos থেকে n-1 পর্যন্তের সকল মান পরিবর্তন করা হচ্ছে তাদের পরের ইন্ডেক্সের মানের সাথে। এই for লুপটির কাজ অ্যারের একটি নির্দিষ্ট অবস্থান (pos) থেকে উপাদান ডিলিট করার জন্য। এটি অ্যারের উপাদানগুলিকে এক স্থান বাম দিকে সরিয়ে দেয়, যাতে নির্দিষ্ট অবস্থানটি খালি হয়ে যায় এবং পরবর্তীতে ডিলিট করা যায়।
for(int i=0; i<n-1; i++)
{
printf("%d ", ar[i]);
}এই লুপে অ্যারে ar এর সকল মান প্রিন্ট করা হচ্ছে n-1 পর্যন্ত।
মডিউল ৯-৭: দুইটি ভেরিয়েবলের মান swap
প্রোগ্রামিং-এ দুইটি ভেরিয়েবলের মান swap করা একটি মৌলিক এবং গুরুত্বপূর্ণ ধারণা। এটি বিভিন্ন অ্যালগরিদম এবং প্রোগ্রামে ব্যাপকভাবে ব্যবহৃত হয়, যেমন সর্টিং অ্যালগরিদম, ম্যাট্রিক্স অপারেশন এবং আরও অনেক ক্ষেত্রে। এই অধ্যায়ে আমরা C প্রোগ্রামিং ভাষায় কীভাবে দুইটি ভেরিয়েবলের মান swap করা যায় তা শিখব।
Swap এর সাধারণ ধারণা:
ধরা যাক, আমাদের কাছে দুইটি ভেরিয়েবল আছে:
- a = 5
- b = 10
Swap করার পর আমরা চাই:
- a = 10
- b = 5
Temporary Variable ব্যবহার করে Swap এর পদ্ধতি:
এটি সবচেয়ে সহজ এবং বহুল ব্যবহৃত পদ্ধতি।
Code (Swap Two Variables):
#include <stdio.h>
int main() {
int a = 5, b = 10, temp;
printf("Before swapping: a = %d, b = %d\n", a, b);
temp = a; // Step 1: a-এর মান temp-এ সংরক্ষণ করুন
a = b; // Step 2: b-এর মান a-তে বসান
b = temp; // Step 3: temp-এর মান b-তে বসান
printf("After swapping: a = %d, b = %d\n", a, b);
return 0;
}Code output:
Before swapping: a = 5, b = 10
After swapping: a = 10, b = 5কাজের ধাপ:
- একটি temporary ভেরিয়েবল temp ডিক্লেয়ার করুন।
- a-এর মান temp-এ রাখুন (temp = a)
- b-এর মান a-তে এসাইন করুন (a = b)
- temp এর মান b-তে এসাইন করুন (b = temp)
মডিউল ৯-৮ + ৯-৯: রিভার্স অ্যারে
"অ্যারে রিভার্স" মানে অ্যারের প্রতিটি সংখ্যাকে তার বিপরীত অবস্থানে পরিবর্তন করা। অর্থাৎ, যদি একটি সংখ্যা পজিশন 1 তে থাকে তবে এর নতুন পজিশন হবে অ্যারের দৈর্ঘ্য, যদি একটি সংখ্যা পজিশন 2 তে থাকে তবে এর নতুন পজিশন হবে অ্যারের দৈর্ঘ্য - 1।
কোডঃ
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int ar[n];
for(int i=0;i<n;i++)
{
scanf("%d",&ar[i]);
}
int i=0,j=n-1;
while(i<j)
{
int tmp=ar[i];
ar[i]=ar[j];
ar[j]=tmp;
i++;
j--;
}
for(int i=0;i<n;i++)
{
printf("%d ",ar[i]);
}
return 0;
}Explanation:
এই C কোডটি একটি অ্যারের উপাদানগুলোকে উল্টো করে দেয় (reverses) এবং তারপর উল্টো করা অ্যারেটি প্রিন্ট করে।
int n;
scanf("%d",&n);int n;: ভেরিয়েবল n ঘোষণা করে, যা অ্যারের আকার ধারণ করবে।scanf("%d",&n);: এটি scanf ফাংশন ব্যবহার করে ব্যবহারকারীর কাছ থেকে অ্যারের আকার নিচ্ছে এবং n ভেরিয়েবলে সংরক্ষণ করছে।
int ar[n];এই লাইনটি n আকারের একটি int অ্যারে ar ঘোষণা করে।
for(int i=0;i<n;i++)
{
scanf("%d",&ar[i]);
}- এই লুপটি ব্যবহারকারীর কাছ থেকে অ্যারের প্রতিটি উপাদান input নেওয়া হয় এবং অ্যারেতে সংরক্ষণ করে।
for(int i=0;i<n;i++): এটি একটি for লুপ, যা i ভেরিয়েবলটি 0 থেকে n-1 পর্যন্ত চালায়।scanf("%d",&ar[i]);: লুপের প্রতিটি iteration এ, এটি scanf ফাংশন ব্যবহার করে user এর কাছ থেকে একটি int মান নেইএবং ar[i] অবস্থানে অ্যারেতে সংরক্ষণ করে।
int i=0,j=n-1;
while(i<j)
{
int tmp=ar[i];
ar[i]=ar[j];
ar[j]=tmp;
i++;
j--;
}এই while লুপটি অ্যারের উপাদানগুলোকে উল্টো করে দেয়।
while(i<j): লুপটি চলতে থাকে যতক্ষণ নাijএর চেয়ে কম হয়। এটি নিশ্চিত করে যে লুপটি অ্যারের মাঝখান পর্যন্ত চলে এবং উভয় দিক থেকে উপাদানগুলোকে সঠিকভাবে swap করা হয়।int tmp=ar[i];: এটি একটি int ভেরিয়েবলtmpঘোষণা করে এবংar[i]এর মান দিয়ে এটি initialize করে। এই ভেরিয়েবলটি সাময়িকভাবেar[i]এর মান ধরে রাখে যাতে আমরা পরবর্তীতেar[j]এর মানar[i]তে স্থানান্তর করতে পারি।ar[i]=ar[j];: এটিar[i]এর মানকেar[j]এর মান দিয়ে প্রতিস্থাপন করে।ar[j]=tmp;: এটিar[j]এর মানকেtmpভেরিয়েবলের মান দিয়ে প্রতিস্থাপন করে, যা আগেar[i]এর মান ধরে রেখেছিল।i++;: এটিiএর মান 1 বাড়িয়ে দেয়।j--;: এটিjএর মান 1 কমিয়ে দেয়।
for(int i=0;i<n;i++)
{
printf("%d ",ar[i]);
}এই লুপটি উল্টো করা অ্যারেটি print করে।
