যেভাবে কোন ডিজিটকে রিভার্স করতে হবে
গাণিতিক লজিক
যদি এমন হয় আমি আপনাকে ১২৩ একটা সংখ্যা দিলাম একটা সি প্রোগ্রাম তাকে ৩২১ এ পরিণত করবে । অর্থাৎ প্রদত্ত সঙ্খাকে reverse করবে । আসুন এর লজিক বোঝা যাক , কিভাবে ১২৩ কে ৩২১ এ তৈরি করা যায় ?
ধরি নাম্বারটি 123
এবার , ১২৩ কে ১০ দ্বারা ভাগ করে ভাগশেষ কত হয় বের করি অর্থাৎ123%10 = 3 = a।এবার ১২৩ কে ১০ দ্বারা আবার ভাগ করবো। তারপর এর ভাগফল কত হয় তা দেখবো 123/10 =12।
যেহেতু এর ভাগফল ০ নয় তাই a কে ১০ দ্বারা গুন করবো a = 30 ।
১২৩ কে ১০ দ্বারা ভাগ করার ফলে যে ভাগফল বের হয়েছিলো অর্থাৎ ১২ । সেই ১২ কে ১০ দ্বারা ভাগ করে ভাগশেষ কত হয় তাই বের করি 12%10=2=b।এবার ১২ কে ১০ দ্বারা আবার ভাগ করি এবং ভাগফল কত হয় তাই দেখবো ,12/10 = 1।
যেহেতু ভাগফল ০ নয় তাই a এবং b কে ১০ দ্বারা গুন করবো তখন a = 300 & b = 20 হবে ।
১২ কে ১০ দ্বারা ভাগ করার পর যে ভাগফল বের হয়েছে তাকে অর্থাৎ ১ কে ১০ দ্বারা ভাগ করে ভাগশেষ বের করি , 1%10 =1=cএবার ১ কে ১০ দ্বারা আবার ভাগ করি এবং ভাগফল কত হয় তাই দেখবো 1/10 = 0 যেহেতু ভাগফল এর মান ০ তাই আমরা এখানে থেমে যাবো( উল্লেখ্যু যে যতক্ষণ প্রযন্ত ০ না হবে ততক্ষণ প্রযন্ত এভাবে করে যেতে হবে । )
এবার a ,b , c কে যোগ করি । a+b+c. = 300+20+1 = 321 ।
যেভাবে সি প্রোগ্রামটি করতে হবে ।
Input হিসেবে একটি num নিতে হবে ।
(1) rev_num = 0 দিয়ে প্রোগ্রামটি শুরু হবে ।
(2) এবার while এর মধ্যে num != 0 এই শর্ত টি দিতে হবে ।
অর্থাৎ নাম্বার ০ থেকে বড় হলেই লুপটি চলবে ।
(a)num কে 10 দ্বারা ভাগ করে এর ভাগশেষ বের করতে হবে।যাকে আমরা remainder বলবো ।এরপর rev_num কে 10 দ্বারা গুন করতে হবে এবং রিমান্ডারের নাম্বার টি যোগ করতে হবে।
remainder = num%10;
rev_num = rev_num*10 + remainder;
(b) num কে 10 দ্বারা ভাগ করতে হবে ।
(3) এবার rev_num কে প্রিন্ট করে পর্দায় আউটপুট দেখাতে হবে ।
#include <stdio.h>
int main()
{
int num, rev_num = 0, remainder;
printf("Enter an integer: ");
scanf("%d", &num);
while(num != 0)
{
remainder = num%10;
rev_num = rev_num*10 + remainder;
num = num/10;
}
printf("rev_num = %d", rev_num);
}
No comments