//count how many 2 divides 100

int x, cnt;
x = 100;
cnt = 0;
while (x % 2 == 0)

x = x / 2;
cnt++;

What this code actually does and what it actually tells? Any good explanation will help me a lot. Thanks.

asked 15 Jul '16, 15:28

shuddha7435's gravatar image

shuddha7435
349


এটা ১০০ কে কতবার ২ নিঃশেষে ভাগ করা যায় সেটা প্রিন্ট করবে । আমর মনে হয় আপনার কোড টা এ রকম হবে ।

while (x % 2 == 0) {
    x = x / 2;
    cnt++;
}

আমি ধরে নিলাম আপনি while loop এ '}' দিতে ভুলা গেছেন :) এবং '/', '%' এই দুইটার ব্যবহার জানেন । এখন একটু ব্যাখ্যা করার চেষ্টা করি ।

শুরুতে x = 100, cnt = 0; যখন লুপের শর্ত চেক করছে ১০০ % 2 == 0 কি না অর্থাৎ ১০০ কে ২ দিয়ে ভাগ করলে ভাগশেষ ০ হয় কি না ? আমরা জানি ১০০ কে ২ দিয়ে ভাগ করলে ভাগশেষ ০ হয় । সুতরাং শর্তটা সত্য এবং while loop এর মাঝে ধুকবে । লুপের মাঝে আমরা দেখতে পাচ্ছি x = x / 2 অর্থাৎ x = ১০০ / ২ = ৫০ এবং cnt এর মান বেড়ে ০ থেকে ১ হবে ।

এখন আবার শর্ত চেক করবে x = 50 কে ২ দিয়ে ভাগ করলে ভাগশেষ ০ হয় কি না ? আমারা জানি সেটা হয় । সুতরাং আবার লুপের মাঝে ধুকবে এবং x = 50 / 2 = 25 করে দিবে এবং cnt আর আগের মানের সাথে ১ যোগ করে দিবে যারফলে cnt এর মান হবে ২ ।

এখন x আর মান ২৫ যেটা কে ২ দিয়ে ভাগ করলে ভাগশেষ ০ হয় না । সুতরাং আমাদের শর্ত পূরণ হয় নি যার ফলে লুপুর মাঝে না ঢুকে লুপ থেকে বের হয়ে আসবে ।

এখন while লুপের পর যদি কোন কাজ করে থাকেন সেটা করবে । যেমন আপনি যদি cnt এর মান প্রিন্ট করেন

printf("%d", cnt);

তবে cnt এর মান ২ প্রিন্ট করবে ।

permanent link

answered 15 Jul '16, 16:41

menon's gravatar image

menon
4.7k335

@shuddha7435, comment section এ comment করলে ভাল হয় । ধন্যবাদ :)

(17 Jul '16, 04:40) menon

ভাইয়া, অনেক অনেক ধন্যবাদ আপনার এত সুন্দর করে বোঝানোর জন্য । সম্পূর্ণ বুঝতে পেরেছি । while এর বাইরে { আমি ইচ্ছা করেই দেই নাই কিন্তু এটা ব্যাপার না। আপনি যেটা জানতে চেয়েছিলাম সেটাই বলেছেন। যেমন ১০০০ কে দিয়ে যদি করি তাহলে দেখি যে ৩ আসে cnt এড় মান।

আবারো অনেক ধন্যবাদ।

permanent link

answered 16 Jul '16, 06:40

shuddha7435's gravatar image

shuddha7435
349

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:

×402
×38

question asked: 15 Jul '16, 15:28

question was seen: 711 times

last updated: 17 Jul '16, 04:40