Array / অ্যারে
আজকে আমরা অ্যারে ডাটা স্ট্রাকচার নিয়ে এখানে আলোচনা করবো।
তার আগে আমাদের বুঝতে হবে ডাটা স্ট্রাকচার জিনিসটা কি?
ডাটা স্ট্রাকচার বলতে বুঝায় ডাটাগুলোকে কোনো একটা নিয়মে সাজানো যাতে করে আমরা ডাটাগুলোকে কার্যকরীভাবে ব্যবহার করতে পারি।
অ্যারে - ও হচ্ছে ডাটা গুলোকে সাজানোর একটা নিয়ম। এখানে ডাটা গুলোকে পরপর পাশাপাশি রেখে সাজানো হয় অর্থাৎ সহজ অর্থে লিনিয়ার ভাবে ডাটা গুলো সাজানো থাকে। নিচের চিত্রে বিস্তারিত:
এখানে আমরা একটা মেমোরির চিত্র তুলে ধরার চেষ্টা করেছি। যেখানে দেখা যাচ্ছে মেমোরিতে ৯ টি ডাটা পাশাপাশি সাজানো রয়েছে।
এইযে এভাবে পাশাপাশি করে লিনিয়ারিটি মেনে ডাটাগুলোকে সাজানে হয়েছে ; এই নিয়মটাকে অ্যারে বলে।
চিত্রে দেখা যাচ্ছে ডাটাগুলোকে নাম্বারিং বা ইনডেক্সিং করা উচিত হয়েছে।
অ্যারের ইনডেক্সিং শুরু হয় শূন্য(০) থেকে এবং শেষ হয় n-1 এ।
অর্থাৎ আমার কাছে যদি n টি ডাটা থাকে তাহলে ইনডেক্স থাকবে ০ থেকে n-1 টি।
আর প্রতিটি ইনডেক্সে আমরা একটি করে ডাটা রাখতে পারবো।
আর অ্যারে টার দৈর্ঘ্য হবে n।
তাহলে যদি অ্যার তে ৯টি ডাটা রাখতে চাই তাহলে ৯ দৈর্ঘ্যের একটা অ্যারে নিতে হবে যেখানে ইনডেক্সিং শুরু হবে শূন্য থেকে এবং শেষ হবে (৯-১)=৮ এ।
Source Code:
#include<stdio.h>
int main()
{
int arr[10];
/* এখানে আমি বলে দিয়েছি যে ১. অ্যারে আমরা শুধুমাত্র ইন্টিজার টাইপের ডাটা রাখতে পারবো, ২. অ্যারের নাম arr, ৩. arr নামক অ্যারেটার সাইজ ১০. */
int n, i ;
scanf("%d",&n);
/* n দিয়ে বুঝাচ্ছি কয়টা ডাট আমি ইনপুট নিতে ইচ্ছুক অ্যারেতে! */
for(i=0 ; i<n ; i++)
{
scanf("%d", & arr [i]);
}
/* এখানে আমরা লুপ চালিয়ে অ্যারতে ইনপুট নিয়েছি। এখানে i র ভ্যালু ০ তে ইনিশিয়েট করেছি কারন অ্যারের ইনডেক্স ০ থেকে শুরু হয় আর লুপ রিপিট হবে n সংখ্যক বার। কারন ০ থেকে n-1 র যোগফল n ই হয়। :p
আপনি চাইলে এভাবে
scanf("%d", & a[0]) ; ইনডেক্স এভাবে ধরে ধরে ১০ বার ইনপুট নিতে পারেন। :p
*/
for( i=0; i<n ; i++)
{
printf("%d ",arr[i]);
}
/*এখানে আমরা অ্যারের ডাটা প্রিন্ট করার জন্যে লুপ ঘুরিয়েছি। */
return 0;
}
Sample Input 1:
5
4 3 7 5 8
Output:
4 3 7 5 8
Sample Input 2:
7
5 2 9 6 3 0 1
Output:
5 2 9 6 3 0 1
আপনার অবশ্যই এটা কোডব্লকে রান করবেন এবং উপরের স্যাম্পল ইনপুট- আউটপুট গুলো টেস্ট করে দেখবেন ঠিকমতো আপনার কোড কাজ করছে কিনা।
আর উপরের একটা প্রশ্নের উত্তর দেয়া বাকি ছিলো যে, অ্যারে তে কি সব ধরনের ডাটা রাখতে পারবো। উত্তরটা হ্যাঁ। সব ধরনের রাখতে পারবো। যেমন int, char, float etc.
কিন্তু একসাথে শুধুমাত্র একধরনের ডাটায় রাখতে পারবো।
তাহলে আজকে আমরা অ্যার সম্পর্কে কিছুটা জানলাম আর অ্যারেতে ইনপুট নেয়া শিখলাম। নিচে কিছু প্রবলেম দিচ্ছি উপরের জ্ঞানটা এপ্লাই করার জন্যে। সলভ করার চেষ্টা করতে থাকুন। সমস্যা হলে কমেন্টে জানান।
Problem :
A. Replacement
B. Positions in array
C. summation
D. lowest number
E. Searching
#Happy_Coding
তার আগে আমাদের বুঝতে হবে ডাটা স্ট্রাকচার জিনিসটা কি?
ডাটা স্ট্রাকচার বলতে বুঝায় ডাটাগুলোকে কোনো একটা নিয়মে সাজানো যাতে করে আমরা ডাটাগুলোকে কার্যকরীভাবে ব্যবহার করতে পারি।
অ্যারে - ও হচ্ছে ডাটা গুলোকে সাজানোর একটা নিয়ম। এখানে ডাটা গুলোকে পরপর পাশাপাশি রেখে সাজানো হয় অর্থাৎ সহজ অর্থে লিনিয়ার ভাবে ডাটা গুলো সাজানো থাকে। নিচের চিত্রে বিস্তারিত:
![]() |
| Fig-1 |
এখানে আমরা একটা মেমোরির চিত্র তুলে ধরার চেষ্টা করেছি। যেখানে দেখা যাচ্ছে মেমোরিতে ৯ টি ডাটা পাশাপাশি সাজানো রয়েছে।
এইযে এভাবে পাশাপাশি করে লিনিয়ারিটি মেনে ডাটাগুলোকে সাজানে হয়েছে ; এই নিয়মটাকে অ্যারে বলে।
চিত্রে দেখা যাচ্ছে ডাটাগুলোকে নাম্বারিং বা ইনডেক্সিং করা উচিত হয়েছে।
অ্যারের ইনডেক্সিং শুরু হয় শূন্য(০) থেকে এবং শেষ হয় n-1 এ।
অর্থাৎ আমার কাছে যদি n টি ডাটা থাকে তাহলে ইনডেক্স থাকবে ০ থেকে n-1 টি।
আর প্রতিটি ইনডেক্সে আমরা একটি করে ডাটা রাখতে পারবো।
আর অ্যারে টার দৈর্ঘ্য হবে n।
তাহলে যদি অ্যার তে ৯টি ডাটা রাখতে চাই তাহলে ৯ দৈর্ঘ্যের একটা অ্যারে নিতে হবে যেখানে ইনডেক্সিং শুরু হবে শূন্য থেকে এবং শেষ হবে (৯-১)=৮ এ।
Source Code:
#include<stdio.h>
int main()
{
int arr[10];
/* এখানে আমি বলে দিয়েছি যে ১. অ্যারে আমরা শুধুমাত্র ইন্টিজার টাইপের ডাটা রাখতে পারবো, ২. অ্যারের নাম arr, ৩. arr নামক অ্যারেটার সাইজ ১০. */
int n, i ;
scanf("%d",&n);
/* n দিয়ে বুঝাচ্ছি কয়টা ডাট আমি ইনপুট নিতে ইচ্ছুক অ্যারেতে! */
for(i=0 ; i<n ; i++)
{
scanf("%d", & arr [i]);
}
/* এখানে আমরা লুপ চালিয়ে অ্যারতে ইনপুট নিয়েছি। এখানে i র ভ্যালু ০ তে ইনিশিয়েট করেছি কারন অ্যারের ইনডেক্স ০ থেকে শুরু হয় আর লুপ রিপিট হবে n সংখ্যক বার। কারন ০ থেকে n-1 র যোগফল n ই হয়। :p
আপনি চাইলে এভাবে
scanf("%d", & a[0]) ; ইনডেক্স এভাবে ধরে ধরে ১০ বার ইনপুট নিতে পারেন। :p
*/
for( i=0; i<n ; i++)
{
printf("%d ",arr[i]);
}
/*এখানে আমরা অ্যারের ডাটা প্রিন্ট করার জন্যে লুপ ঘুরিয়েছি। */
return 0;
}
Sample Input 1:
5
4 3 7 5 8
Output:
4 3 7 5 8
Sample Input 2:
7
5 2 9 6 3 0 1
Output:
5 2 9 6 3 0 1
আপনার অবশ্যই এটা কোডব্লকে রান করবেন এবং উপরের স্যাম্পল ইনপুট- আউটপুট গুলো টেস্ট করে দেখবেন ঠিকমতো আপনার কোড কাজ করছে কিনা।
আর উপরের একটা প্রশ্নের উত্তর দেয়া বাকি ছিলো যে, অ্যারে তে কি সব ধরনের ডাটা রাখতে পারবো। উত্তরটা হ্যাঁ। সব ধরনের রাখতে পারবো। যেমন int, char, float etc.
কিন্তু একসাথে শুধুমাত্র একধরনের ডাটায় রাখতে পারবো।
তাহলে আজকে আমরা অ্যার সম্পর্কে কিছুটা জানলাম আর অ্যারেতে ইনপুট নেয়া শিখলাম। নিচে কিছু প্রবলেম দিচ্ছি উপরের জ্ঞানটা এপ্লাই করার জন্যে। সলভ করার চেষ্টা করতে থাকুন। সমস্যা হলে কমেন্টে জানান।
Problem :
A. Replacement
B. Positions in array
C. summation
D. lowest number
E. Searching
#Happy_Coding

যেই ডাটা গুলো দেওয়া আছে সেগুলো কি কোন নিয়ম মেনে দেওয়া লাগেনা??মানে এখানে তো ছোট বড় আবার বড় ছোট এইভাবে দেওয়া। এই ভাবে দিলেও কি প্রব্লেম নাই?
ReplyDeleteআসলে ডাটা গুলো ইনপুট যেকোনো নিয়ম মেনে দেয়া যায়। তবে আমার প্রত্যাশিত আউটপুট পেতে ইনপুট নেয়ার পর কাজ করা লাগে। প্র্যাকটিস প্রবলেম গুলো অনুশীলন করলেই বুঝতে পারবেন। :)
Delete