এই সেকশনে আমরা দেখব কিভাবে কোনো কন্ডিশনাল স্টেটমেন্ট (<, <=, !=, >, >=, ==) ব্যবহার না করেই একটি নম্বর কি অড (Odd) নাকি ইভেন (Even) তা চেক করা যায়।
আমরা সহজে কন্ডিশনাল স্টেটমেন্ট ব্যবহার করে অড বা ইভেন চেক করতে পারি। নম্বরটিকে ২ দিয়ে ভাগ করে রিমাইন্ডার ০ কিনা চেক করলে। যদি ০ হয়, তবে ইভেন। অন্যথায় আমরা নম্বর এবং ১-এর সাথে AND অপারেশন করতে পারি। যদি ফলাফল ০ হয়, তবে ইভেন, অন্যথায় অড।
এখানে কোনো কন্ডিশনাল স্টেটমেন্ট ব্যবহার করা যাবে না। আমরা অড বা ইভেন চেক করার দুটি আলাদা মেথড দেখব।
মেথড ১ (Method 1)
এখানে আমরা একটি স্ট্রিং অ্যারে তৈরি করব। ইনডেক্স ০ পজিশনে "Even" থাকবে, এবং ইনডেক্স ১ পজিশনে "Odd" থাকবে। আমরা নম্বরটিকে ২ দিয়ে ভাগ করার পর যে রিমাইন্ডার পাব, সেটিকে ইনডেক্স হিসেবে ব্যবহার করে সরাসরি ফলাফল পেতে পারি।
উদাহরণ কোড
#include <stdio.h>
main() {
int n;
char* arr[2] = {"Even", "Odd"};
printf("Enter a number: "); // ইউজার থেকে নম্বর নিন
scanf("%d", &n);
printf("The number is: %s", arr[n%2]); // রিমাইন্ডার দিয়ে স্ট্রিং বেছে নিন
}
আউটপুট ১
Enter a number: 40 The number is: Even
আউটপুট ২
Enter a number: 89 The number is: Odd
মেথড ২ (Method 2)
এটি দ্বিতীয় মেথড। এই মেথডে আমরা কিছু ট্রিক ব্যবহার করব। এখানে লজিক্যাল এবং বিটওয়াইজ অপারেটর ব্যবহার করা হয়েছে। প্রথমে নম্বর এবং ১-এর সাথে AND অপারেশন করা হচ্ছে। তারপর লজিক্যাল AND ব্যবহার করে অড বা ইভেন প্রিন্ট করা হচ্ছে। যখন বিটওয়াইজ AND-এর ফলাফল ১ হয়, তবে লজিক্যাল AND অপারেশনটি "odd" রিটার্ন করবে, অন্যথায় "even" রিটার্ন করবে।
উদাহরণ কোড
#include <stdio.h>
main() {
int n;
char *arr[2] = {"Even", "Odd"};
printf("Enter a number: "); // ইউজার থেকে নম্বর নিন
scanf("%d", &n);
(n & 1 && printf("odd")) || printf("even"); // n & 1 হবে ১ যখন LSB-এ ১ থাকবে, তাই অড।
}
আউটপুট ১
Enter a number: 40 even
আউটপুট ২
Enter a number: 89 odd