কম্পিউটার

C++ এ সমান্তরাল অ্যারে


সমান্তরাল অ্যারেকে স্ট্রাকচার অ্যারেও বলা হয়।

সংজ্ঞা − একটি সমান্তরাল অ্যারেকে একাধিক অ্যারে হিসাবে সংজ্ঞায়িত করা যেতে পারে যেখানে ith উপাদানগুলি ঘনিষ্ঠভাবে সম্পর্কিত, এবং একসাথে, তারা একটি সত্তা গঠন করে। একটি অ্যারে হল C++ ভাষার একটি মৌলিক বৈশিষ্ট্য। সমান্তরাল অ্যারে তৈরি করা আমাদের দুই বা ততোধিক অ্যারে তুলনা করতে সাহায্য করে।

উদাহরণস্বরূপ,

প্রথম_নাম =['জন', 'ডেক্সটার', 'ফ্রেড', 'হ্যাঙ্ক', 'জেমস']শেষ_নাম =['জোকাব', 'জোনাস', 'স্মিথ', 'লি', 'ব্যানার']উচ্চতা =[160, 148, 231, 153, 162] 

একটি সমান্তরাল অ্যারে তৈরি করার পদ্ধতি

একটি সমান্তরাল অ্যারে গঠনের জন্য প্রয়োজনীয় কিছু প্রয়োজনীয় বৈশিষ্ট্য হল অনুসন্ধান এবং বাছাই করা৷

অনুসন্ধান করা হচ্ছে

অনুসন্ধান একটি সত্তা নির্দিষ্ট মান উপর ভিত্তি করে. উদাহরণস্বরূপ, আমাদের এমন একজন ব্যক্তির ঠিকানা খুঁজে বের করতে হবে যার উচ্চতা 180 সেন্টিমিটারের কম। তাই আমরা 180-এর কম মান বিশিষ্ট উচ্চতা বিন্যাসের মানদণ্ড অনুসন্ধান করি। অবশেষে, যখন আমরা ফলাফল পাই, আমরা সেগুলি প্রিন্ট করতে পারি।

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

  • সংশ্লিষ্ট অ্যারেতে প্রয়োজনীয় মান অনুসন্ধান করুন

  • সূচকটি সংরক্ষণ করুন যেখানে মানগুলি পাওয়া যায়।

  • মান প্রিন্ট করুন।

বাছাই করা হচ্ছে

বাছাই, আমরা একই সূচক এবং মান দিয়ে সমস্ত অ্যারে সাজাই। উদাহরণস্বরূপ, আমাদের উচ্চতা সূচককে আরোহী ক্রমে সাজাতে হবে। সুতরাং যখন আমরা দুটি উচ্চতা অদলবদল করি, তখন আমরা অন্যান্য অ্যারেতে তাদের মানগুলিও অদলবদল করি। আমরা সাংখ্যিক বা বর্ণানুক্রমিক উপায়ে অ্যারে সাজাতে পারি।

একটি অ্যারে সাজানোর জন্য আমাদের এই পদক্ষেপগুলি অনুসরণ করতে হবে৷

  • অ্যারের মধ্যে সূচী খুঁজুন।

  • এখন সমস্ত অ্যারের 2টি গণনাকৃত সূচকের মান অদলবদল করুন।

বাস্তবায়ন

  • প্রদত্ত কোড নাম, দ্বিতীয় নাম এবং উচ্চতা সংরক্ষণ করে।

  • প্রদত্ত কোড নাম, দ্বিতীয় নাম এবং উচ্চতা সংরক্ষণ করে।

  • আমাদের দ্বিতীয় সবচেয়ে লম্বা ছাত্র, তৃতীয় সবচেয়ে খাটো ছাত্রের নাম খুঁজতে হবে।

তারপর রেকর্ডে ছাত্রটির উচ্চতা 158 সেন্টিমিটারের সমান।

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;int পার্টিশন(string first_name[], stringlast_name[],int height[], int low, int high){int pivot =height[high]; // পিভট int i =(কম - 1); // (int j =low; j <=high - 1; j++) { যদি (উচ্চতা[j] <=পিভট) { i++; স্ট্রিং টেম্প =first_name[i]; first_name[i] =first_name[j]; first_name[j] =temp; temp =শেষ_নাম[i]; last_name[i] =last_name[j]; last_name[j] =temp; int temp1 =উচ্চতা[i]; উচ্চতা [আমি] =উচ্চতা [জে]; উচ্চতা [জে] =তাপমাত্রা1; } } স্ট্রিং টেম্প =first_name[i + 1]; প্রথম_নাম[i + 1] =প্রথম_নাম[উচ্চ]; প্রথম_নাম [উচ্চ] =তাপমাত্রা; temp =last_name[i + 1]; শেষ_নাম[i + 1] =শেষ_নাম[উচ্চ]; last_name[উচ্চ] =তাপমাত্রা; int temp1 =উচ্চতা[i + 1]; উচ্চতা[i + 1] =উচ্চতা [উচ্চ]; উচ্চতা [উচ্চ] =তাপমাত্রা1; রিটার্ন (i + 1);} void quickSort(string first_name[], string last_name[],int height[], int low, int high){ if (low  158) উচ্চ =সূচক - 1; else low =index + 1; } cout <<"দুঃখিত, এমন কোন ব্যক্তি নেই" " উচ্চতা 158 সেমি"; cout <<"রেকর্ডে পাওয়া যায়";} void printParallelArray(string first_name[],string last_name[], int height[], int n){ cout <<"ক্রমবর্ধমান মানুষের নাম"; cout <<"তাদের উচ্চতার ক্রম:" < 

আউটপুট

<পূর্ব>তাদের উচ্চতা বৃদ্ধির ক্রম অনুসারে মানুষের নাম:ডেক্সটার জোনাসের উচ্চতা 148 সেমি হ্যাঙ্ক লির উচ্চতা 153 সেমি জন জোকাবের উচ্চতা 160 সেমি ফ্রেড স্মিথের উচ্চতা 231 সেমি দ্বিতীয় লম্বা ব্যক্তির নাম জন জোকাব, তৃতীয় সবচেয়ে খাটো ব্যক্তির নাম জন জোকাবের নাম রেকর্ডে 158 সেমিসিস উচ্চতার এমন কোন ব্যক্তি পাওয়া যায়নি

সমান্তরাল অ্যারের সুবিধা

  • কিছু ক্ষেত্রে, তারা প্রান্তিককরণ সমস্যাগুলি এড়িয়ে একটি উল্লেখযোগ্য পরিমাণ স্থান সংরক্ষণ করতে পারে। কিছু আর্কিটেকচার, উদাহরণস্বরূপ, 4-বাইট পূর্ণসংখ্যা সর্বদা 4 এর গুণিতক মেমরি অবস্থানে সংরক্ষণ করা হলে সবচেয়ে ভাল কাজ করে। যদি পূর্ববর্তী ক্ষেত্রটি একটি একক বাইট হয়, তাহলে এটি 3 বাইট দূরে ফেলে দিতে পারে। অনেক আধুনিক কম্পাইলার স্বয়ংক্রিয়ভাবে এই ধরনের সমস্যা এড়াতে পারে। এখনও, অতীতে, কিছু প্রোগ্রামার স্পষ্টভাবে প্রান্তিককরণ সীমাবদ্ধতার ক্রমহ্রাসমান ক্ষেত্রগুলি ঘোষণা করতেন৷

  • যখন একটি অ্যারেতে আইটেমের সংখ্যা কম হয়, তখন অ্যারে সূচকগুলি সম্পূর্ণ পয়েন্টারের তুলনায় অনেক কম জায়গা নিতে পারে, বিশেষ করে কিছু আর্কিটেকচারে৷

  • ক্রমানুসারে পরীক্ষা করা হয়েছে

  • ক্রমানুসারে অ্যারের প্রতিটি রেকর্ডের একটি একক ক্ষেত্র পরীক্ষা করা আধুনিক মেশিনে দ্রুত কারণ এটি রেফারেন্স এবং ক্যাশে আচরণের একটি আদর্শ স্থান সহ একটি একক অ্যারের একটি রৈখিক ট্রাভার্সালের পরিমাণ।

সমান্তরাল অ্যারের অসুবিধাগুলি

  • যেহেতু বিভিন্ন অ্যারেগুলি এলোমেলোভাবে অনেক দূরে সঞ্চয় করা যেতে পারে, তাই অ-ক্রমিকভাবে রেকর্ডগুলি দেখার চেষ্টা করার সময় এবং প্রতিটি রেকর্ডের একাধিক ক্ষেত্র পরীক্ষা করার সময় তাদের রেফারেন্সের উল্লেখযোগ্যভাবে খারাপ অবস্থান রয়েছে৷

  • তারা একটি একক রেকর্ডে ক্ষেত্রগুলির মধ্যে সংযোগকে অস্পষ্ট করে (যেমন, কোন তথ্য তাদের মধ্যে সূচকের সাথে সম্পর্কিত নয়, যা অপব্যবহার হতে পারে)।

  • তাদের সামান্য সরাসরি ভাষা সহায়তা রয়েছে (ভাষা এবং এর বাক্য গঠন সাধারণত সমান্তরাল অ্যারের মধ্যে অ্যারের মধ্যে কোনও সম্পর্ক প্রকাশ করে না এবং ত্রুটিগুলি ধরতে পারে না)।

  • কারণ ক্ষেত্রগুলি সংগ্রহ করা একটি "জিনিস" নয়, এটিকে পাস করা সময়সাপেক্ষ এবং ত্রুটি-প্রবণ। উদাহরণস্বরূপ, একটি একক রেকর্ডে (বা কাঠামো বা বস্তু) কাজ করার জন্য একটি ফাংশনকে কল করার পরিবর্তে ফাংশনটিকে অবশ্যই ক্ষেত্রগুলিকে পৃথক আর্গুমেন্ট হিসাবে গ্রহণ করতে হবে। একটি নতুন ক্ষেত্র যোগ বা পরিবর্তিত হলে অনেক পরামিতি তালিকা পরিবর্তন করা আবশ্যক। বিপরীতে, সামগ্রিকভাবে অবজেক্ট পাস করা এই ধরনের পরিবর্তনগুলিকে সম্পূর্ণরূপে এড়াবে।

  • এগুলি প্রসারিত করা বা সংকুচিত করা ব্যয়বহুল কারণ প্রতিটি অ্যারেকে অবশ্যই পুনরায় বরাদ্দ করতে হবে। মাল্টি-লেভেল অ্যারেগুলি এই সমস্যার সাথে সাহায্য করতে পারে, কিন্তু কাঙ্ক্ষিত উপাদানগুলি খুঁজে পেতে প্রয়োজনীয় অতিরিক্ত নির্দেশের কারণে তারা কার্যক্ষমতাকে ক্ষতিগ্রস্ত করে৷

উপসংহার

এই টিউটোরিয়ালে, আমরা শিখেছি কিভাবে c++ কোড সহ একটি সমান্তরাল অ্যারে তৈরি করতে হয়। আমরা জাভা, পাইথন এবং অন্যান্য ভাষায় এই কোডটি লিখতে পারি। অ্যারে হল C++ প্রোগ্রামিং ভাষার অন্যতম মৌলিক এবং সবচেয়ে সহায়ক বৈশিষ্ট্য। এগুলি বিভিন্ন উদ্দেশ্যে ব্যবহার করা হয়, যেমন সাজানো এবং অনুসন্ধান করা। আমরা আশা করি আপনার এই টিউটোরিয়ালটি সহায়ক হবে৷


  1. C++ এ একটি সমষ্টি অ্যারে ধাঁধা?

  2. একটি C++ ফাংশনে একটি 2D অ্যারে পাস করা

  3. সমান্তরাল অ্যারে বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. একটি C++ ফাংশনে একটি অ্যারে পাস করা