Category Archives: C

মডুলাস অপারেটর নিয়ে কিছু কথা

ইদানিং প্রব্লেম সল্ভ করতে গিয়ে কিছু প্রব্লেম এ পড়লে দেখছি যে মডুলাস এর ধারনা টা নিজের কাছে ক্লিয়ার থাকলে অনেক সুবিধা হয় … তো নিজে শেখা পাশাপাশি শেয়ার করতে চাচ্ছি…আজকে একটু ঘাটাঘাটি করে যা শিখার চেস্টা করেছি তা…

স্ট্যাক ওভার ফ্লো এবং আরো কিছু ওয়েবসাইট ঘাটাঘাটি করে যা জানতে পেরেছি

61%9 বের করতে চাই আমি…তাই যা করা লাগবে আমার হাতে কলমে যদি চাই

61/9=6.77778
6.77778-6=0.77778
0.77778*9=7

এক্সাকটলি রিমেইন্ডারটাও ৭… সি তে করে দেখলে

আসলে ব্যাপারটা যেভাবে হয়

আমরা কি জানি ভাগের ক্ষেত্রে 61(ভাজ্য বা Divident)÷9(ভাজক বা Divisor)=6.77778(Quotient বা ভাগফল) আর ভাগশেষ হিসেবে যদি 7 আসে ঐটা হচ্ছে Ramainder

সি বা যেকোনো ল্যাংগুয়েজেই মডুলার অ্যারেথমেটিক বা মডুলো অপারেটর বা মডুলাস এর কাজ হচ্ছে ভাগশেষ টা বের ক রা…এটা হাতে কলমে করলে এভাবেও আসে আমার  এর আগের একটা ব্লগ পোস্টে উল্লেখ করেছি তা লিঙ্ক

কিন্তু ক্যলকুলেটর বা দ্রুততার সাথে নিজে থেকে করতে গেলে উপরের ফর্মুলাটার ব্যাখা অনেকটা এরকম

61/9=6.77778 অর্থাৎ divident/divisor=quotient
6.77778-6=0.77778 অর্থাৎ quotient বা ভাগফল – quotient বা ভাগফল এর ইন্টেজার মান
0.77778*9=7 তারপর প্রাপ্ত বিয়োগফল টাকে divisor বা ভাজক দিয়ে গুন করলেই আমাদের কাংখিত remainder বা ভাগশেষ পেয়ে গেলাম 😀

যে কারনে আমরা ইন্টেজার নিলাম কারন হচ্ছে মডুলার অ্যারেথমেটিক এর ক্ষেত্রে দশমিকের পরের মানগুলা ইগনোর করা হয়

সাধারনত Modulo দিয়ে আমরা অনেক কাজ করতে পারি

যেমনঃ একটা ভ্যালু থেকে কত মাস কতদিন হয়  সহজেই আমরা তা বের করতে পারি।
লজিকটা অনেকটা এরকম

1.Taking input from user
2.Month=input/30
3.Days=input%30

এখানে প্রাপ্ত ইনপুট কে ৩০ দিয়ে ভাগ দিলেই আমরা কত মাস তা পেয়ে যাচ্ছি(কারন এক মাস সমান ৩০ দিন) আর আরো  গভীরে যেতে হলে যেমন গুনে গুনে কত দিন হয় তা বের করতে হলে আমাদের রিমেইন্ডার বা ভাগশেষ লাগছে

আবার ধরলাম যে কেউ ২৪ ঘন্টা সময়ের হিসাবে 15:00 টা  সমান ১২ ঘন্টা হিসাবে কত তা জানতে চাচ্ছে এ ক্ষেত্রে ভাগশেষ এর নিয়ম ছাড়া কোনো গতি নেই

তো কিভাবে হবে তা দেখে নেই

১৫ কে ১২ দিয়ে ভাগ অর্থাৎ
15/12=1.25
1.25-1=0.25
0.25*12=3

অর্থাৎ ১৫টা সমান ৩ টা…কি বুঝলেন 😀 😀

সি তে মডুলাস এর কাজ

অনলাইন জাজ গুলোতে টুকি টাকি প্রব্লেম সলভ করতে গিয়ে আজকে এক জায়গায় আটকে গিয়েছি…সেটা হচ্ছে মডুলাস অপারেটর এর কাজ ভুলে গেছি…এমন না যে বুঝিনা বা পারিনা ব্যাপারটা কিন্তু নিজেকে আরেকবার ঝালাই করে নেবার প্রয়োজনে ব্লগ টা লিখে ফেল্লাম

ইন্টারনেট ঘেটে বিভিন্ন ব্লগ,সুবিন ভাইয়ের সি এর উপর বইটার ব্লগ,নিটন এর সবার জন্য সি এ দেখে ব্যাপারটা নিজের মত করে এখানে শেয়ার করলাম

মডুলাস % এর কাজ হচ্ছে ভাগশেষ বের করা এক কথায় বলতে গেলে এমনি ব্যাপারটা…তো কাজটা কেন করব আমরা…

ধরেন অড বা বিজোড় এবং জোড় বা ইভেন কিনা কোনো নাম্বার তা বের করব আমরা…

সেক্ষেত্রে, ধরেন ইনপুট নিলাম ৫ তাহলে মড ব্যবহার করে খুব সহজেই সম্ভব…যেমন কোনো সংখ্যা জোড় তখনি হয় যখন ২ দিয়ে ভাগ দিলে তা নিঃশেষে বিভাজ্য হয় মানে এ ভাগশেষ ০ (শূন্য) হয় আর তানাহলে সংখ্যাটি  বেজোড় হয়

যেমনঃ নিচের ছবিটিতে ৫ জোড় না বেজোড় কিভাবে হয় তা দেখানো হ ল
modulus

আর সি তে তার কোড হচ্ছে এরকম