ইদানিং প্রব্লেম সল্ভ করতে গিয়ে কিছু প্রব্লেম এ পড়লে দেখছি যে মডুলাস এর ধারনা টা নিজের কাছে ক্লিয়ার থাকলে অনেক সুবিধা হয় … তো নিজে শেখা পাশাপাশি শেয়ার করতে চাচ্ছি…আজকে একটু ঘাটাঘাটি করে যা শিখার চেস্টা করেছি তা…
স্ট্যাক ওভার ফ্লো এবং আরো কিছু ওয়েবসাইট ঘাটাঘাটি করে যা জানতে পেরেছি
61%9 বের করতে চাই আমি…তাই যা করা লাগবে আমার হাতে কলমে যদি চাই
61/9=6.77778
6.77778-6=0.77778
0.77778*9=7
এক্সাকটলি রিমেইন্ডারটাও ৭… সি তে করে দেখলে
#include<stdio.h> int main() { int x,y,z; x=61; y=9; z=x%y; printf("%d",z); return 0; }
আসলে ব্যাপারটা যেভাবে হয়
আমরা কি জানি ভাগের ক্ষেত্রে 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
অর্থাৎ ১৫টা সমান ৩ টা…কি বুঝলেন 😀 😀