Monday, January 5, 2015

Binary search and Palindrome pro in C



Check whether a given String is Palindrome or not using Recursion

#include 
#include 
#include 
void check(char [], int);
int main()
{
    char word[15];
    clrscr();
    printf("Enter a word to check if it is a palindrome\n");
    scanf("%s", word);
    check(word, 0);
    return 0;
}
void check(char word[], int index)
{
    int len = strlen(word) - (index + 1);
    if (word[index] == word[len])
    {
        if (index + 1 == len || index == len)
        {
            printf("The entered word is a palindrome\n");
            return;
        }
        check(word, index + 1);
    }
    else
    {
        printf("The entered word is not a palindrome\n");
    }
  }
}

Output
 
Enter a word to check if it is a palindrome
malayalam
The entered word is a palindrome

Find GCD of given Numbers using Recursion

#include 
#include  
int gcd(int, int);
int main()
{
    int a, b, result;
    printf("Enter the two numbers to find their GCD: ");
    scanf("%d%d", &a, &b);
    result = gcd(a, b);
    printf("The GCD of %d and %d is %d.\n", a, b, result);
}
int gcd(int a, int b)
{
    while (a != b)
    {
        if (a > b)
        {
            return gcd(a - b, b);
        }
        else
        {
            return gcd(a, b - a);
        }
    }
    return a;
  }
}

Output
 
Enter the two numbers to find their GCD: 100 70
The GCD of 100 and 70 is 10.

Perform Binary Search using Recursion

#include 
#include 
void binary_search(int [], int, int, int);
void bubble_sort(int [], int);
int main()
{
    int key, size, i;
    int list[25];
    clrscr();
    printf("Enter size of a list: ");
    scanf("%d", &size);
    printf("Generating random numbers\n");
    for(i = 0; i < size; i++)
    {
        list[i] = rand() % 100;
        printf("%d  ", list[i]);
    }
    bubble_sort(list, size);
    printf("\n\n");
    printf("Enter key to search\n");
    scanf("%d", &key);
    binary_search(list, 0, size, key);
 }
 void bubble_sort(int list[], int size)
{
    int temp, i, j;
    for (i = 0; i < size; i++)
    {
        for (j = i; j < size; j++)
        {
            if (list[i] > list[j])
            {
                temp = list[i];
                list[i] = list[j];
                list[j] = temp;
            }
        }
    }
}
void binary_search(int list[], int lo, int hi, int key)
{
    int mid;
    if (lo > hi)
    {
        printf("Key not found\n");
        return;
    }
    mid = (lo + hi) / 2;
    if (list[mid] == key)
    {
        printf("Key found\n");
    }
    else if (list[mid] > key)
    {
        binary_search(list, lo, mid - 1, key);
    }
    else if (list[mid] < key)
    {
        binary_search(list, mid + 1, hi, key);
    }
  }
}

Output
 
Enter size of a list: 10
Generating random numbers
83  86  77  15  93  35  86  92  49  21  
Enter key to search
21
Key found

No comments:

Post a Comment