সি প্রোগ্রাম দিয়ে বেজ কনভার্শন

এই পোস্টে আমরা ডেসিমাল নাম্বারকে বাইনারীতে কনভার্ট করার প্রোগ্রাম করতে শিখবো। এ জন্য আমাদের আগে থেকে অ্যারে (Array) সম্পর্কে বেসিক ধারণা থাকা লাগবে।

ডেসিমাল বা দশমিক সংখ্যাকে বাইনারীতে রুপান্তরের জন্যে আমরা দশমিক সংখ্যাকে ক্রমান্বয়ে ভাগ করতে থাকি এবং প্রত্যেক ক্ষেত্রে প্রাপ্ত ভাগফলগুলোকে বিপরীত ক্রমে সাজিয়ে বসাই। ঠিক এই কাজটিই আমরা আজকের প্রোগ্রামে করবো।একটি ডেসিমাল নাম্বারকে ক্রমান্বয়ে ভাগ করে প্রাপ্ত ভাগশেষ গুলো একটি অ্যারের মধ্যে রেখে দিবো এবং অ্যারের এলিমেন্টগুলো বিপরীতক্রমে প্রিন্ট করবো।

শুরুতেই প্রোগ্রামের জন্য প্রয়োজনীয় ভেরিয়েবল ও অ্যারে ডিক্লেয়ার করে নিই।

[cpp]
#include

int main()
{
long int a,c;
int i=0,count=0;
char bol[10000];
}
[/cpp]

 

ইন্টেজার a তে আমরা নির্ণেয় ডেসিমাল নাম্বারটি রাখবো এবং c তে তা কপি করে নিবো।কপি কেন করতেসি তা আমরা কিছুক্ষন পরেই বুঝতে পারবো।ইন্টেজার i দিয়ে আমরা লুপ চালাবো এবং count এ মোট রিমাইন্ডার বা ভাগশেষ সংখ্যা গুনে রাখবো। bol[10000] একটি ক্যারেক্টার টাইপ অ্যারে যেটার মধ্যে আমরা রিমাইন্ডার গুলোকে রেখে দিবো।

[cpp]
#include

int main()
{
long int a,c;
int i=0,count=0;
char bol[10000];
scanf(“%ld”, &a);
c = a;
}
[/cpp]

একটি হুয়াইল লুপ চালিয়ে আমরা রিমাইন্ডারগুলি বের করে নিবো আর সেগুলোকে bol অ্যারের মধ্যে ইনসার্ট করে রাখবো।সাথে সাথে রিমাইন্ডার সংখ্যাও কাউন্ট করে রাখবো।
[cpp]
#include

int main()
{
long int a,c;
int i=0,count=0;
char bol[10000];
scanf(“%ld”, &a);
c = a;
while(a!=0)
{
bol[i] = a%2;
a = a / 2;
count++;
i++;
}
}
[/cpp]

ধরি a=12,তাহলে প্রথমবার লুপ রান পর bol[0]=12%2=0,a=12/2=6,count=1,i=1 হবে।দ্বিতীয়বার লুপ রান করার পর bol[1]=6%2=0,a=6/2=3,count=2,i=2 হবে।তৃতীয়বারে bol[2]=3%2=1,a=3/2=1,count=2,i=2 এবং শেষবারে bol[3]=1%2=1,a=1/2=0,count=3,i=3 হবে। লুপ শেষে অ্যারের ভ্যালু bol= “0011” দেখাবে।

আমাদের শেষ কাজ হবে অ্যারের এলিমেন্টগুলো বিপরীতক্রমে প্রিন্ট করা। a=0 হলে বাইনারী হিসেবে প্রোগ্রাম শুধু 0 প্রিন্ট করবে।while লুপ চলাকালে a এর ভ্যালু বার বার চেঞ্জ হয়।তাই c তে আমরা a এর ইনিশিয়াল ভ্যালু অ্যাসাইন করে রাখা হইসে। শুন্য ছাড়া অন্য যেকোন ধনাত্মক মানের জন্য আমরা ফরলুপের সাহায্যে অ্যারে প্রিন্ট করবো।

[cpp]
#include

int main()
{
long int a,c;
int i=0,count=0;
char bol[10000];
scanf(“%ld”, &a);
c = a;
while(a!=0)
{
bol[i] = a%2;
a = a / 2;
count++;
i++;
}
if(c==0)
{
printf(“0”);
}
else
{
for(i=count-1; i>=0; i–)
{
printf(“%d”, bol[i]);
}
}
printf(“n”);
return 0;
}
[/cpp]
23 তম লাইনের ফরলুপ বিপরীতক্রমে অ্যারে এলিমেন্টগুলি প্রিন্ট করবে।এখন সমস্ত প্রোগ্রামটি কম্পাইল করে আমরা অনেক বড় ডেসিমাল সংখ্যারও বাইনারী কনভার্শন করতে পারবো।

সি প্রোগ্রাম দিয়ে বেজ কনভার্শন

983 Total Views 1 Views Today
The following two tabs change content below.

যোগাযোগ করুন

আমরা এই মূহূর্তে অনলাইনে না থাকায় সরাসরি কথা বলতে পারছি না। আপনি আমাদের একটা মেইল করে রাখতে পারেনা, যত তারাতারি সম্ভব আমরা আপনার মেইলের উত্তর করার চেষ্টা করবো।

Sending

© ২০১১-২০২০ ইচ্ছে কোড প্রোগ্রামিং স্কুল বাংলা ভাষায় প্রোগ্রামিং শিক্ষা

Log in with your credentials

Forgot your details?