Friday, 3 November 2017

একটি সংখ্যাকে উলটো করে প্রিন্ট করার প্রোগ্রাম

মনেকরি, 2017  সংখ্যাটিকে  উলটো করে প্রিন্ট করতে হবে। এখন এই কাজটি কিভাবে করা যায়?
এই কঠিন কাজটি সহজ করার জন্য আমাদের পরিচিত একটা অপারেটর আছে। মডুলাস (%) অপারেটর।

এবার দেখি কিভাবে কাজটি করবোঃ
কোন সংখ্যাকে ১০ দিয়ে মড করলে তার সর্বশেষ অংকটি পাওয়া যায়।
প্রথমে 2017  কে 10 দিয়ে মড করলামঃ 2017 % 10 = 7
এই 7 কে প্রিন্ট করে দিলাম।

তারপর 2017 কে 10 দিয়ে ভাগ করলামঃ 2017/10 = 201
আবার 201 কে 10 দিয়ে মড করলামঃ 201 % 10 =  1
এই 1 কে প্রিন্ট করে দিলাম।

তারপর 201 কে 10 দিয়ে ভাগ করলামঃ 201/10 = 20
আবার 20 কে 10 দিয়ে মড করলামঃ 20 % 10 =  0
এই 0 কে প্রিন্ট করে দিলাম।

তারপর 20 কে 10 দিয়ে ভাগ করলামঃ 20/10 = 2
আবার 2 কে 10 দিয়ে মড করলামঃ 2 % 10 =  2
এই 2 কে প্রিন্ট করে দিলাম।


যদি আমরা কোন নিউ লাইন অথবা স্পেস ছাড়া প্রিন্ট করি তাহলেই আউটপুট টা পেয়ে যাবো।


প্রোগ্রামঃ

#include<stdio.h>
int main()
{
    int num = 2017,mod;

    mod = num%10;
    printf("%d",mod);

    num = num/10;
    mod = num%10;
    printf("%d",mod);

    num = num/10;
    mod = num%10;
    printf("%d",mod);

    num = num/10;
    mod = num%10;
    printf("%d",mod);

    return 0;
}



তোমার জন্য কাজঃ  উপরের প্রোগ্রামটি লুপ ব্যবহার করে করো।

তুমি এখনই নিচের অংশ না পড়ে লুপ দিয়ে প্রোগ্রামটা করার চেস্টা করো, যদি কমপক্ষে পাঁচ বার চেষ্টা করার পর না পারো, তাহলে নিচের অংশ পড়। 


লক্ষ্য করে দেখো আমরা num কে 10 দিয়ে ভাগ করার কাজ টি ঠিক ততক্ষণ পর্যন্ত করে গেছি যতক্ষণ না num এর মান 0 না হয়েছে।

প্রোগ্রামঃ

#include<stdio.h>
int main()
{
    int num = 2017,mod;


    while(num>0)
    {
        mod = num%10;
        printf("%d",mod);
        num = num/10;
    }

    return 0;

}


এবার তোমাকে বলা হলো  2017 কে উলটো করে সেটা একটা ভেরিয়েবলে রাখতে হবে। এখন তো আর একটা একটা করে প্রিন্ট করে দিলে খেল খতম হবে না। আমাদের যা করতে হবে , একটা ই ভেরিয়েবল এ  7102 রাখতে হবে। তারপর প্রিন্ট করতে বলা হলে প্রিন্ট করবো যোগ করতে বলা হলে যোগ করবো, যা করতে বলা হয় প্রোগ্রামে তা করবো। কিন্তু আগে তো উলটো করে একটা ভেরিয়েবলে রাখতে হবে। 

এবার চলো দেখে নেই কিভাবে কাজটি করা যায়। 
আবার 2017 এ চলে যাই, 
আমরা 2017 কে 10 দিয়ে মড করলাম, 2017 % 10 = 7
এই 7 কে আমরা rev নামক ভেরিয়েবলে রাখলাম। 
rev = 7.

তারপর, 2017 কে 10 দিয়ে ভাগ করলাম। 
2017/10  = 201

তারপর আগের মতো 201 কে 10 দিয়ে মড করলাম।
 201%10 = 1

এতক্ষণ যা করলাম সব আগের মতো , এখন ব্যপারটা বোঝতে চেষ্টা করো। 
আমরা rev এ 7 কে রেখেছিলাম। 
এবার rev কে ১০ দিয়ে গুণ করে তার সাথে 1 যোগ করে দিবো।

মানে দাঁড়ালোঃ  (rev*10) + 1 = (7*10)+1 = 70+1 =71.

এরপর আবার আগের প্রসেসে ফিরে যাই। 

তারপর, 201 কে 10 দিয়ে ভাগ করলাম। 
201/10  = 20

তারপর  20 কে 10 দিয়ে মড করলাম।
 20%10 = 0
এবার rev কে ১০ দিয়ে গুণ করে তার সাথে 0 যোগ করে দিবো।

মানে দাঁড়ালোঃ  (rev*10) + 0 = (71*10)+0 = 710+0 =710.

তারপর, 20 কে 10 দিয়ে ভাগ করলাম। 
20/10  = 2

তারপর  2 কে 10 দিয়ে মড করলাম।
 2%10 = 2
এবার rev কে ১০ দিয়ে গুণ করে তার সাথে 2 যোগ করে দিবো।

মানে দাঁড়ালোঃ  (rev*10) + 2 = (710*10)+2 = 7100+2 =7102.

ব্যাস আমরা পেয়ে গেলাম আমাদের কাংখিত ফলাফল। 


প্রোগ্রামটা নিজে লেখার চেষ্টা করো। 

Wednesday, 1 November 2017

লুপ দিয়ে অংক গণনা

আগের পোস্টে আমরা log ব্যবহার করে একটি সংখ্যায় কতটি অংক আছে তা নির্ণয়ের প্রোগ্রাম দেখেছি।

এবার আমরা দেখবো লুপ দিয়ে কিভাবে কাজটি করা যায়।


#include<stdio.h>
int main()
{
    int num,i,count=0;
    printf("Enter a Number:\n");
    scanf("%d",&num);
    while(num>0)
    {
        num = num/10;
        count++;
    }
    printf("Total digit = %d\n",count);

    return 0;
}


ব্যাখ্যাঃ 
একটা সংখ্যাকে ১০ দিয়ে ভাগ করলে এর সর্বশেষ অংকটি মুছে যায়। 

মনেকরি আমাদের কাছে একটি সংখ্যা আছে ঃ 123456

এবার আমাদের প্রমাণ করতে হবে এখানে ছয়টি অংক আছে। 


ধাপ - ১ঃ  123456 / 10 = 12345 
               
               ১২৩৪৫৬ কে ১০ দিয়ে ভাগকরলে ভাগফল হবে ১২৩৪৫। তারমানে, আমরা সর্বশেষ অংকটি  মুছে দিয়েছি। 
         
     count : 1.
     
 ধাপ - ২ঃ  12345 / 10 = 1234 
               
               ১২৩৪৫ কে ১০ দিয়ে ভাগকরলে ভাগফল হবে ১২৩৪। তারমানে, আমরা সর্বশেষ অংকটি  মুছে দিয়েছি। 
         
     count : 2.

ধাপ - ৩ঃ  1234 / 10 = 123 
               
               ১২৩৪ কে ১০ দিয়ে ভাগকরলে ভাগফল হবে ১২৩। তারমানে, আমরা সর্বশেষ  অংকটি  মুছে দিয়েছি। 
         
     count : 3.

প্রতিবার একটি সংখ্যা মুছার পর যদি আমরা count এর মান 1 করে বাড়াই , তাহলে আমরা উত্তর পেয়ে যাবো।


আশাকরি তোমরা বোঝতে পেরেছো। বাকী ধাপগুলো নিজেই করে ফেলো। 

ব্রেকিং কন্ডিশনঃ
আমরা ব্রেকিং কন্ডিশন হিসেবে ব্যবহার করেছি   num>0   তারমানে যতক্ষণ পর্যন্ত আমাদের সংখ্যাটা ০ এর চেয়ে বড় থাকবে ততক্ষণ পর্যন্ত লুপ চলবে। তাহলে আমাদের প্রোগ্রামে এমন কিছু করতে হবে যাতে num এর মান শুণ্য বা তার থেকে ছোট হয়। এই কাজটা আমরা করেছি num কে প্রতিবার 10 দিয়ে ভাগ করে। 






তোমাদের জন্য একটি কাজঃ   ইউজারের কাছ থেকে একটি সংখ্যা ইনপুট নিবে এবং সবগুলা অংকের যোগফল নির্ণয়ের প্রোগ্রাম লিখবে। 
Hints : Modulus operator ( % ) ব্যবহার করে সর্বশেষ সংখ্যা বের করো । :p