স্ট্রিং (String) part 2


স্ট্রিং (String) ডাটা স্ট্রাকচার -  ডাটা স্ট্রাকচার, স্ট্রিং
এখন আমরা স্ট্রিং এর একটি বহুল ব্যবহৃত ফাংশন strlen এর ব্যাবহার দেখব। এই ফাংশনটি কোন স্ট্রিং এর দৈর্ঘ্য বের করতে ব্যাবহার করা হয়। এটি C এর "string.h" হেডার ফাইলে আছে। এই ফাংশনের মধ্যে কোন স্ট্রিং দিলে সে তার দৈর্ঘ্য রিটার্ন করবে। নিচের উদাহরণ টি এটির ব্যাবহার আরও পরিষ্কার করবে।
#include <stdio.h>
#include <string.h>

void main(){
    char s[] = "abcde";
    printf("%d\n", strlen(s));
}
উপরের প্রোগ্রামটি রান করালে আউটপুট আসবে 5


স্ট্রিং (String) ডাটা স্ট্রাকচার -  স্ট্রিং
আমরা এখন আরেকটি বহুল ব্যবহৃত ফাংশন হল strcmp. এটি টি স্ট্রিং কে প্যারামিটার হিশেবে নেয় এবং তাদের মধ্যে তুলনা করে। যদি প্রথমটি ২য় টির চেয়ে ছোট হয় তবে ঋণাত্মক, যদি ২টি সমান হয় তাহলে 0, যদি প্রথমটি বড় হয় তাহলে ধনাত্মক কিছু রিটার্ন করবে। উদাহরণ স্বরূপ নিচের প্রোগ্রামগুলো দেখা যেতে পারে।
#include <stdio.h>
#include <string.h>
void main(){
    char s1[] = "abc";
    char s2[] = "def";
    printf("%d\n", strcmp(s1, s2));
}
এই কোডের আউটপুট হবে ঋণাত্মক। কারণ প্রথম স্ট্রিং টি ২য় টির চেয়ে ছোট। 
#include <stdio.h>
#include <string.h>
void main(){
    char s1[] = "def";
    char s2[] = "abc";
    printf("%d\n", strcmp(s1, s2));
}
এই কোডের আউটপুট হবে ধনাত্মক। কারণ প্রথম স্ট্রিং টি ২য় টির চেয়ে বড়। 
#include <stdio.h>
#include <string.h>
void main(){
    char s1[] = "abc";
    char s2[] = "abc";
    printf("%d\n", strcmp(s1, s2));
}
এই কোডের আউটপুট হবে 0 কারণ টি স্ট্রিং সমান।  


স্ট্রিং (String) ডাটা স্ট্রাকচার -  স্ট্রিং
এবারে আমরা স্ট্রিং এর নতুন একটি ফাংশন সম্পর্কে জানব। এটি হল strcat এই ফাংশনটি টি স্ট্রিং নেয়, এবং ২য় স্ট্রিংটিকে প্রথম স্ট্রিং এর শেষে যোগ করে দেয়। নিচে আমরা এর একটি উদাহরণ দেখব।
#include <stdio.h>
int main(){
    char s1[] = "abc";
    char s2[] = "def";
    strcat(s1, s2);
    printf("%s\n", s1);
}
উপরের কোড টি আউটপুট দেখাবে abcdef


স্ট্রিং (String) ডাটা স্ট্রাকচার - ১০ স্ট্রিং
আমরা এবারে কোন স্ট্রিং plaindrome কিনা তা পরীক্ষা করার জন্য একটি কোড করব। একটা স্ট্রিং palindrome হবে যদি স্ট্রিংটিকে প্রথম থেকে শেষ পর্যন্ত পরে গেলে যা পাব, শেষ থেকে প্রথমে পরে গেলেও তাই পাব। অথবা ১ম ক্যারেকটার আর শেষ ক্যারেকটার একই হবে। ২য় শেষ থেকে ২য় একই হবে এরকম। এটা পরিক্ষা করার সবচেয়ে ভাল উপায় হল একটি লুপ চালিয়ে দেখা যে সব ক্যারেকটার এই নিয়ম মেনে চলে কিনা। নিচের কোডটি এই কাজটি করে দেয়।
#include<stdio.h>
#include<string.h>
int main(){
    char s[100];
    scanf("%s", s);
    int i, j = strlen(s) - 1, pal_flag = 1;
    for(i = 0; i <= j; i++){
        if(s[i] != s[j]) pal_flag = 0;
        j--;
    }
    if(pal_flag) printf("Palindrome\n");
    else printf("NOT Palindrome\n");
    return 0;
}


স্ট্রিং (String) ডাটা স্ট্রাকচার - ১১ স্ট্রিং

ধরুন আপনাকে একটি স্ট্রিং দেয়া হল। স্ট্রিং টি ছোট হাতের ইংরেজি অক্ষর(a-z) দিয়ে গঠিত। এবার আপনাকে বলতে হবে এর মধ্যে কোন অক্ষরটি কতবার এসেছে। এটি কিভাবে করা যায়? এজন্য আপনার একটি অ্যারে লাগবে যার সাইজ ২৬। আমরা ধরি  'a' = 0,  'b' = 1,  'c' = 2 ...  এরপরে আপনাকে স্ট্রিং এর উপরে একটি লুপ চালাতে হবে, প্রতিবারে যে ক্যারেকটার আছে তার ভ্যালু এর অ্যারে ইনডেক্স কে এক করে বারিয়ে দিন। নিচের কোডটি এই কাজ টি করে দেয়। 
#include<stdio.h>
int main(){
    int ar[26] = {0};
    char s[] = "abcde";
    int i, n = strlen(s);
    for(i = 0; i < n; i++) ar[ s[i]-'a' ]++;
    for(i = 0; i < 26; i++) printf("Character %c occured %d times\n", (char)(i+'a'), ar[i]);
    return 0;
}


স্ট্রিং (String) ডাটা স্ট্রাকচার - ১২ স্ট্রিং
আমরা আগেরস্ট্রিং (String) ডাটা স্ট্রাকচার - ১১ ) তে দেখেেছি কোন অক্ষর কতবার আছে তা কিভাবে বের করা যায়। এতে আমরা একটা অ্যারে পেয়েছি। এই স্ট্রিং কোন অক্ষরটি সবচেয়ে বেশিবার আছে তা জানার জন্য এটা জানলেই হয় যে অ্যারে তে সবচেয়ে বড় ভ্যালূ কোনটা। এজন্য অ্যারের থেকে ২৫ পর্যন্ত একটি লুপ চালিয়ে দেখতে হবে কোন ভ্যালু তা সবচেয়ে বড়। তারপরে তা আউটপুট দিলেই হল। 
#include<stdio.h>
int main(){
    int ar[26] = {0};
    char s[] = "abcde";
    int i, n = strlen(s);
    for(i = 0; i < n; i++) ar[ s[i]-'a' ]++;
    int mx_val = -1, mx_char = -1;
    for(i = 0; i < 26; i++){
        if(ar[i] > mx_val){
            mx_val = ar[i];
            mx_char = i;
        }
    }
    printf("Character %c has maximum occurence\n", (char)mx_char+'a');
    return 0;
}


স্ট্রিং (String) ডাটা স্ট্রাকচার - ১৪ স্ট্রিং
এবারে আমরা স্ট্রিং কোন কিছু ডিলিট করা শিখব। ধরুন স্ট্রিং টি অক্ষর রয়েছে তম ইনডেক্স থেকে নং ইনডেক্স পর্যন্ত। এবারে আপনি নং ইনডেক্স এর অক্ষরটি ডিলিট করতে চান। তাহলে নং ইনডেক্স নং ইনডেক্স এর অক্ষরটি আসবে। নং নং ইনডেক্স এর অক্ষরটি যাবে। তাহলে আমরা নিচের কোডটি একবার দেখে নেই। 
#include<stdio.h>
int main(){
    string s[10] = "abcde";
    int pos = 2, i;
    for(i = pos; i < 4; i++) s[i] = s[i+1];
    s[4] = '\0';
    printf("%s\n", s);
    return 0;
}




মন্তব্যসমূহ