অ্যারে ইন সি প্রোগ্রামিং
Array in C Programming
কেন প্রয়োজন?
উদাহরণ দিয়ে বললে হয়ত ভালো বুঝতে পারবে। আমি একটা সি প্রোগ্রাম লিখতে চাই যার মুখ্য কাজ হচ্ছে, একটা ক্লাসের সকল ছাত্র গণিত পরীক্ষায় অংশগ্রহণ করেছে এবং তাদের সকলের গড় নম্বর বের করা।
ধর, ক্লাসে যদি ৩টি ছাত্র থাকে, আর তাদের মার্কস যদি যথাক্রমে ৭০, ৮০ এবং ৯০ হয়, তবে তাদের গড় নম্বর (৭০ + ৮০ + ৯০) / ৩ = ৮০।
#include<stdio.h>
int main() {
int a, b, c;
a = 70;
b = 80;
c = 90;
int sum = a + b + c;
int avg = sum / 3;
printf("%d", avg);
return 0;
}কিন্তু আমার ক্লাসে যদি ৩টা না হয়ে ৫০টা স্টুডেন্ট থাকত, তাহলে আমাকে এরকম ৫০টা ভ্যারিয়েবল নিতে হত, যেটা খুবই শ্রমসাপেক্ষ। এরকম সিচ্যুয়েশান মানে, একই ধরনের অনেকগুলো ভ্যারিয়েবল যখন আমাদের ক্রিয়েট করতে হবে, তখন আমাদের অ্যারে প্রয়োজন হবে।
অ্যারের ব্যবহার এবং সিনট্যাক্স
#include<stdio.h>
int main() {
int st[5];
st[0] = 56;
st[1] = 62;
st[2] = 33;
st[3] = 25;
st[4] = 84;
int sum = st[0] + st[1] + st[2] + st[3] + st[4];
int avg = sum / 5;
printf("%d\n", avg);
return 0;
}আমরা ৫ সাইজের ইন্টিজার অ্যারে ডিক্লিয়ার করি নিচের মত করে:
int st[5];শুরুতে, টাইপ (ইন্টিজার, ডাবল ইত্যাদি), তারপর অ্যারের নাম এবং সবশেষে থার্ড ব্র্যাকেটে অ্যারের সাইজ।
আমি অ্যারের নাম নিয়েছি st, তাই সি নিজেই আমার জন্য ৫টি ভ্যারিয়েবল তৈরী করেছে, যাদের নাম – st[0], st[1], st[2], st[3] এবং st[4]। এই যে ভ্যারিয়েবলের নামগুলোতে থার্ড ব্র্যাকেটে 0 – 4 পর্যন্ত যে সংখ্যা দেখছি, এগুলোকে বলা হয়, একটা অ্যারের ইনডেক্স।
লুপিং
আমরা লুপ ব্যবহার করে অ্যারের সব এলিমেন্ট সহজে প্রিন্ট করতে পারি:
#include<stdio.h>
int main() {
int st[5];
st[0] = 56;
st[1] = 62;
st[2] = 33;
st[3] = 25;
st[4] = 84;
printf("Displaying Exam Marks: \n");
int i;
for(i = 0; i < 5; i++) {
printf("%d\n", st[i]);
}
return 0;
}2D অ্যারে
2D অ্যারে মূলত অনেকগুলো 1D বা লিনিয়ার অ্যারের সমষ্টি। আবার এটাকে একটা 2D ম্যাট্রিক্স এর মত করেও চিন্তা করতে পারি আমরা।
int ara[3][5];এখানে Row আছে ৩টি এবং Column আছে ৫টি। তাই Row এর রেঞ্জ হবে ০ থেকে ২ পর্যন্ত। Column এর রেঞ্জ হবে ০ থেকে ৪ পর্যন্ত।
#include<stdio.h>
int main() {
int ara[3][5];
int i, j;
// Input
for(i = 0; i < 3; i++) {
for(j = 0; j < 5; j++) {
scanf("%d", &ara[i][j]);
}
}
// Output
for(i = 0; i < 3; i++) {
for(j = 0; j < 5; j++) {
printf("%d ", ara[i][j]);
}
}
return 0;
}টাস্ক
- •৫ সাইজের একটি অ্যারেতে ইউজারের কাছ থেকে ইনপুট নিয়ে তা প্রিন্ট করা। ইনপুট নেওয়া এবং প্রিন্ট করা দুইটিই ফর লুপ দিয়ে করতে হবে।
- •১০ সাইজের একটি অ্যারে নিজের ইচ্ছামত ভ্যালু দিয়ে ইনিশিয়ালাইজ করে শুধুমাত্র জোড় (ইভেন) ইনডেক্সগুলোর ভ্যালু প্রিন্ট করতে হবে।
- •একটি অ্যারেতে ক্লাসের ১০ জন ছাত্রের পরীক্ষার মার্কস থাকবে, এরপর ইউজার যেকোন একজন ছাত্রের রোল ইনপুট দিবে এবং তারপর শুধুমাত্র সেই রোলের পরীক্ষার মার্কস প্রিন্ট করে দেখাতে হবে।