সমীকরণের মাধ্যমে সমস্যা সমাধানের মজা!

ধরাযাক, আপনাকে একটা সমস্যা দেওয়া হলো যেখানে ইনপুট যদি 1 দেওয়া হয় তাহলে আউটপুট হবে 0, অথবা ইনপুট যদি 0 দেওয়া হয় তাহলে আউটপুট হবে 1.
আপনাদের মধ্যে যাদের মাথায় সবসময় if…else ঘুরে তারা হয়তো if…else দিয়ে সমাধান করার চেষ্টা শুরু করে দিছেন। কিন্তু আমরা if…else ব্যবহার না করে সমীকরণের মাধ্যমে সমাধান করার চেষ্টা করবো।
আবার যাদের মাথায় সবসময় লজিক্যাল অপারেটর(&&, ||, !) ঘুরে তারা হইতো লজিক্যাল অপারেটর দিয়ে সমাধান করার কথা ভাবতেছেন।
আমরা বিভিন্ন উপায়ে সমাধান করে দেখবো। তারপর সমীকরণ ব্যবহারের মজাটা আপনি ও বুঝতে পারবেন।
প্রথমে আমরা দেখবো if…else ব্যবহার করে কিভাবে সমাধান করা যায়।
#include<stdio.h> int main() { int num; printf(“Enter 0 or 1 : “); scanf(“%d”, &num); if(num==1) printf(“0”); else printf(“1”); return 0; }
আশাকরি বুঝতে পেরেছেন। এবার লজিক্যাল অপারেটর নট(!) ব্যবহার করে সমাধান করার চেষ্টা করবো।
আমরা জানি, নট অপারেশনের কাজ সম্পর্কে। নট গেইট ব্যবহারের ফলে 1 ইনপুট দিলে আউটপুট হয় 0 অথবা 0 ইনপুট দিলে আউটপুট হয় 1. তাহলে এবার নট অপারেশন দিয়ে সমাধান করে ফেলি।
#include<stdio.h> int main() { int num; printf(“Enter 0 or 1 : “); scanf(“%d”, &num); printf(“Result : %d”, !num); return 0; } এবার সমীকরণ প্রেমীদের জন্য রইলো নিচের সমাধানটি।
#include<stdio.h> int main() { int num; printf(“Enter 0 or 1 : “); scanf(“%d”, &num); num = 1-num; printf(“%d”, num); return 0; }
এখানে আউটপুটের জন্য আরেকটা ভ্যারিয়েবল ব্যবহার করতে পারতাম। কিন্তু অতিরিক্ত ভ্যারিয়েবল ব্যবহার করা থেকে বিরত থাকলাম।
বর্ণনাঃ ধরাযাক, num এর মধ্যে আমি 0 ইনপুট দিলাম। তাহলে 1 থেকে 0 বিয়োগ করলে ফলাফল হয় 1 এবং এই ফলাফল আবার num ভ্যারিয়েবলের মধ্যে রাখলাম। একইভাবে যদি 1 ইনপুট দেই তাহলে 1 থেকে 1 বিয়োগ করলে ফলাফল হয় 0. অর্থাৎ, আপনি যদি 0 ইনপুট দেন তাহলে আউটপুট হবে 1 অথবা যদি 1 ইনপুট দেই তাহলে আউটপুট হবে 0. আশা করি সবাই বুঝতে পেরেছেন। কোথাও কোনো সমস্যা থাকলে, না বুঝে থাকলে অবশ্যই কমেন্টে জানাবেন। ভুল-ত্রুটি ক্ষমা সুন্দর দৃষ্টিতে দেখবেন।
সকলের জন্য শুভ কামনা রইলো।
আরো টিপস্ পেতে সাথে থাকুন। কমেন্টে আপনার মতামত জানিয়ে সহযোগিতা করুন।