Monthly Archives: January 2015

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

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

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

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

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