Sunday, October 16, 2011

Calculate Factorial in python

Objective : Using python calculate factorial of a number.
Logic : the logic is exactly the same as we do it in C language. so we use loops.

Code:
def factorial(number):

    ans=1;

    for i in range(2,number+1):

        ans=ans*i;

    print(ans)

    return

What are the benefits of this code in python over the same in C? well on the first you won't see much advantages, but that's where you overlook Python !!! Python utilizes a heavy bit integers (128 bit integers), so 200! can be easily calculated without using decimal representation. Isn't that cool !!!

Friday, October 14, 2011

Program to check if a number is palindrome or not in C

Objective : To check if given number is palindrome or not in C.
Programming logic : This is a very easy program if you know how to reverse a number. Once you have found the reverse of number just compare it with original, if both are same then the number is palindrome.

Code:
#include<stdio.h>
int main()
{
    int k;
    printf("\n enter number =");
    scanf("%d",&k);
    if(palindrome(k))
    {
        printf("\n The number is palindrome");
    }
    else
    {
        printf("\n The number is not palindrome");
    }
    return(0);
}
int palindrome(int x)
{
    int rev=0;//to calculate reverse of number
    int k=x;
    while(k>0)
    {
        rev=rev*10+k%10;
        k=k/10;
    }
    if(x==rev)// check if reverse is equal to given number
    {
        return(1);//if yes then return 1
    }
    else
    {
        return(0);//else return 0
    }
}

Fibonacci series in C non recursive

Objective : To print given numbers of Fibonacci series. (1,1,2,3,5.....) non recursively.
Programming Logic: Its easy to print the above Fibonacci series in C. the number is always sum of previous 2 terms. This series starts with numbers 1,1. so next term is 1+1=2. Then next term is 1+2=3 and so on.
(It may be noted that series 1,3,4,7,11,18.... is also a Fibonacci series, but it starts with 1,3 )

Code :
#include<stdio.h>
int main()
{
    int k;
    printf("\n enter number of terms to print=");
    scanf("%d",&k);
    fic(k);
    return(0);
}
void fic(int x)// x are number of terms to print
{
    int a,b,sum,i;
    a=b=1;
    printf("1,1,",sum);//first 2  terms
    for(i=0;i<x-2;i++)
    {
        sum=a+b;
        printf("%d,",sum);
        a=b;
        b=sum;    
    }
}

It may be noted that using a non recursive way to calculate Fibonacci series in C provides faster calculations as compared with recursive method. As recursive program have a large overhead of function calls. Also the recursive way is very unoptimised since it doesn't uses the last 2 values that have been calculated already..

Thursday, October 13, 2011

Reversing a Number in C

Objective : You are given a  number and you have to find the reverse of the given number in C. reverse of 1234 will be 4321.

Programming logic: The logic lies in constructing the reverse numbers from the digits of the given number. So we extract each digit with % modulus operator and then build the number up.To build the number we simply multiply the reverse number by 10 and then add the next remainder to it.
Like 1234:
1234%10=4 (remainder). rev=4.
123%10= 3. rev=4x10+3=43.
12%10=2 rev=43x10+2=432.
1%10=1 rev=432x10+1=4321.


Code:
#include<stdio.h>
int main()
{
    int k;
   printf("\n enter a number=");
   scanf("%d",&k);
   printf("\n Reverse of the number is=%d",reverse(k));
   return 0;
}
int reverse(int x)
{
    int ans=0,r;
    while( x > 0 )
    {
        r=x%10;//extract last digit
        ans=ans*10+r;// multiply by 10 and then add the remainder
          x=x/10;//reduce number
    }
   return(ans);

}

Integer to Binary in c

Objective : To convert the given integer to binary in C language.

Programming technique : The conversion of integer to binary can be done in many ways. I will demonstrate a very simple (possibly very unoptimised ) way which it is easy to understand.
This way involves using an array to store the remainder of the number when we divide it by 2. The remainder will be saved in array. We will start filling the array from the last and at last we will print the array.
This technique will convert integer number to binary using array, it may not be a true solution but you will get the picture.
we will use % modules operator to extract remainder. Then will reduce the number till it reaches 0. The array will be initialized to 0.

Code :
#include<stdio.h>
int main()
{
    int p;
    printf("\n Enter a number=");
    scanf("%d",&p);
    bin(p);
}

void bin(int x)
{
    long b=0;
    int binary[20],i;
    for(i=0;i<20;i++)
    {
        binary[i]=0;//setting array to 0
    }
    i=19;// starting from last of array
    while(x>0)
    {

        binary[i]=x%2;//save remainder to array
        x=x/2; //reduce number
        i--;//moving index 
    }
    printf("\n Printing Binary=");
    for(i=0;i<20;i++)
    {
        printf("%d",binary[i]);
    }
}


one possible drawback of this technique is that you cant use the binary number directly  in calculations.
Note : The above method will store only 20 digits of binary.

Wednesday, October 12, 2011

Find Sum of Digits of a Number in C

Objective: Your are given a number and you have to find the sum of its digits. Like 1234 so its digits sum 1+2+3+4=10.

Programming technique : This problem  can be solved using the fact that modulus operator (%) gives the last digit when divided by 10. So we successively Divide it , till all numbers are exhausted.
so The program runs like this >>
1234%10 gives last digit. that is 4. (we save it ) then divide the number by 10 to reduce it.
1234/10=123. and repeat the process till the number becomes 0.
First run : 1234%10 gives 4, 1234/10=123.
Second run: 123%10 gives 3 , 123/10=12.
Third Run :12%10 gives 2 , 12/10=1
Fourth run: 1%10 gives 1, 1/10=0 (we stop here).
pretty easy stuff.

Code :-
#include<stdio.h>

int main()
{
    int k;
    printf("\n enter any number=");
    scanf("%d",&k);
    printf("\n sum of digit=%d",sumdigit(k));
          return(0);
}

int sumdigit(int x)
{
    int sum=0;// will save sum
    int r=0; // for remainder
    while(x>0)
    {
        r=x%10;//get remainder
        sum+=r;//sum it
        x=x/10;    //reduce number
    }
    return(sum);
}