আমরা একই দৈর্ঘ্য প্রতিটি স্ট্রিং একটি অ্যারে দেওয়া হয়. লক্ষ্য হল কলামগুলি খুঁজে বের করা, ( ম্যাট্রিক্সফ স্ট্রিং ) যা ক্রমবর্ধমান ক্রমে সাজানো হয় না। উদাহরণস্বরূপ, স্ট্রিং এর প্রতিটি প্রথম অক্ষর পরবর্তী স্ট্রিং এর প্রথম অক্ষরের সাথে তুলনা করা হয় এবং শেষ স্ট্রিং পর্যন্ত। যদি তারা ক্রমবর্ধমান না হয়, গণনা বাড়ান। সমস্ত দ্বিতীয় অক্ষরের জন্য এটি করুন, তারপরে সমস্ত স্ট্রিংয়ের তৃতীয় অক্ষর এবং শেষ অক্ষর পর্যন্ত।
ইনপুট
Arr[]= { “abc”, “bcd”, “def” }
আউটপুট
Count of columns: 0
ব্যাখ্যা − প্রতিটি কলামের জন্য,
কলাম 1:সূচক 0 এ অক্ষর :a
কলাম 2:সূচক 1 এ অক্ষর :b
কলাম 3:সূচক 2 এ অক্ষর :c
কলামের সমস্ত সংশ্লিষ্ট অক্ষর ক্রমবর্ধমান ক্রমে সাজানো হয়েছে।
ব্যাখ্যা − প্রতিটি কলামের জন্য,
কলাম 1 − সূচক 0 এ অক্ষর :d
সূচী 1 এ কলাম 2 − অক্ষর :b>a
সূচী 2 এ কলাম 3 − অক্ষর :d
কলাম 1 এবং 2-এ ক্রম বৃদ্ধি ছাড়াই অক্ষর রয়েছে৷ গণনা=2
ক্যারেক্টার অ্যারে অ্যারে[][] একই দৈর্ঘ্যের স্ট্রিং সংরক্ষণ করতে ব্যবহৃত হয়।
ফাংশন countCols(char str[3][4],int n,int len) একটি স্ট্রিং অ্যারে নেয়, না। এতে স্ট্রিং এবং প্রতিটি স্ট্রিং এর দৈর্ঘ্য ইনপুট হিসাবে এবং ক্রমবর্ধমান ক্রমে নয় এমন কলামগুলির গণনা প্রদান করে।
0 দিয়ে গণনা শুরু করুন।
বর্তমান কলামের প্রতিনিধিত্ব করতে Col ব্যবহার করা হয়। (সমস্ত স্ট্রিংয়ের জন্য সাধারণ সূচক)।
স্ট্রিং এর দৈর্ঘ্য (সকলের জন্য একই দৈর্ঘ্য) পর্যন্ত লুপ ব্যবহার করে প্রথম সূচী থেকে শুরু করে প্রতিটি স্ট্রিং একই সাথে ট্র্যাভার করে।
এখানে প্রতিটি স্ট্রিং 3টি অক্ষরের তাই আমরা str[col+1][j-1] ||str[col+1][j]>str[col+2][j- তুলনা করি 1]। যদি কোনো শর্ত সত্য হয়, গণনা বাড়ান।
ফর লুপ শেষ হওয়ার পরে ফলাফলটি গণনায় উপস্থিত হয়।ইনপুট
Arr[]= { “dbd”, “faf”, “eeg” }
আউটপুট
Count of columns: 2
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int countCols(char str[3][4],int n,int len){
int i,j;
int count=0;
int col=0;
for(j=0;j<len;j++){
if(str[col][j]>str[col+1][j-1] || str[col+1][j]>str[col+2][j-1] )
count++;
}
return count;
}
int main(){
char arr[3][4]={"abc", "daf", "ghi"};
cout<<"\nColumns that are not sorted:"<<countCols(arr,3,3);
return 0;
}
আউটপুট
Columns that are not sorted:2