#include <stdio.h>
#include <string.h>

int main()
{
    char s[1000], word[100];
    int i,j, lenght, is_word_started;
    gets(s);
    lenght=strlen(s);
    is_word_started=0;

    for(i=0, j=0; i<=lenght; i++){
        if(s[i]>='a' && s[i]<='z'){
            if(is_word_started==0){
                is_word_started=1;
                word[j]='A'+s[i]-'a';
                j++;
            }
            else{
                word[j]=s[i];
                j++;
            }
        }
        else if(s[i]>='A' && s[i]<='Z'){
            if(is_word_started==0){
                is_word_started=1;
            }
            word[j]=s[i];
            j++;
        }
        else if(s[i]>='0' && s[i]<='9'){
            if(is_word_started==0){
                is_word_started=1;
            }
            word[j]=s[i];
            j++;
        }
        else{
            if(is_word_started==1){
                is_word_started=0;
                word[j]='\0';
                printf("%s\n", word);
                j=0;
            }
        }
    }
    return 0;
}

এখানে ভ্যারিয়েবল হিসেবে is_word_started=0; নেয়া হয়েছে এবং পরবর্তীতে তা কন্ডিশনের ভেতর লেখা হয়েছে। এটা দিয়ে প্রোগ্রামকে বোঝানো হচ্ছে যে শব্দ শুরু হয়নি, এটিই প্রথম অক্ষর। আবার যখন এর মান পরে 1 দেয়া হয় তখন এটি দিয়ে বোঝানো হয় যে শব্দ শুরু হয়েছে (শব্দ শুরু হয়নি/হয়েছে, এটি দ্বারা আসলে কী বোঝানো হয়েছে?)। তারপর যদি স্ট্রিংয়ের প্রথম অক্ষরটি ছোট হাতের থাকে তাহলে তা বড় হাতের অক্ষরে রুপান্তর হয়। এখন এই ০ এবং ১ দিয়ে প্রোগ্রামটি কীভাবে বুঝতে পারে যে কোনো শব্দ শুরু হয়নি কিংবা শুরু হয়েছে? অর্থাৎ এটি কীভাবে কাজ করে?

প্রোগ্রামটি নেওয়া হয়েছে কম্পিউটার প্রোগ্রামিং ১ম খণ্ড বই থেকে (প্রোগ্রাম ৯.৮)।

asked 27 May, 15:14

stardestroyer77's gravatar image

stardestroyer77
315

edited 28 May, 10:44

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
1.1k18


0 অথবা 1 দেখে কম্পিউটার কিছু বোঝে না, আমরা বুঝি। আর একইভাবে কম্পিউটারকে বোঝাচ্ছি। লুপ যখন word শব্দের w অক্ষরের ওপর থাকে, তখন is_word_started = 1 করে অক্ষরটিকে বড় হাতের করে দেওয়া হয় (প্রথম ইফ স্টেটমেন্ট)। যখন o অক্ষরের ওপর থাকে, তখন দেখা যায় আগে থেকেই ইজ ওয়ার্ড স্টার্টেড-এর মান 1, তাই এই অক্ষর আর বড় হাতের হয় না। এভাবে চলতে থাকে। আবার যখন কোনো স্পেস পাওয়া যায়, তখন ইজ ওয়ার্ড স্টার্টেড-এর মান 0 করে দেওয়া হয়, যাতে পরের শব্দ নিয়ে কাজ করা যায় (শেষ এলস ব্লক)।

"কম্পিউটার বোঝে কীভাবে যে শব্দ শুরু হয়েছে কি না?"—বোঝে না। কম্পিউটারের বোঝারও দরকার নেই। এখানে আমরা বলে দিচ্ছি যে যদি is_word_started = 0 হয় তাহলে ধরে নেবে শব্দ শুরু হয়েছে, অন্যথায় নয়। আবার যখন কোনো হোয়াইটস্পেস পাবে, তখন is_word_started = 1-কে is_word_started = 0 করে দেবে, যাতে পরের ইটারেশনে (লুপের চলাকে ইটারেশন বলা হয়) পরের শব্দের প্রথম অক্ষর নিয়ে কাজ করতে পারে। অর্থাৎ কম্পিউটার শুধু কন্ডিশন চেক করছে আর কন্ডিশন সত্য হলে যা করার জন্য বলা হয়েছে তা করছে।

permanent link

answered 29 May, 16:42

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
1.1k18

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×418
×73
×61
×16
×6

question asked: 27 May, 15:14

question was seen: 232 times

last updated: 29 May, 16:42