C Programs Fuctions and Pointers

1. Find GCD and LCM

#include<stdio.h>
int GCD(int a,int b)
{
    int rem=a%b;
    while(rem!=0)
    {
        a=b;
        b=rem;
        rem=a%b;
    }
    return b;
}
int LCM(int a,int b)
{
    return ((a*b)/GCD(a,b));
}
int main()
{
    int a,b,g,l;
    printf("Enter two integers:\n");
    scanf("%d%d",&a,&b);
    g=GCD(a,b);
    l=LCM(a,b);
    printf("Greatest common divisor of %d and %d = %d\nLeast common multiple of %d and %d = %d",a,b,g,a,b,l);
    return 0;
}
2. Expression Evaluation

#include<stdio.h>
#include<math.h>
int calculate(int x,int n)
{
    int sum=x;
    for(int i=2;i<=n;i++)
    {
    	sum=sum+pow(x,i);
    }
    return sum;
}
int main()
{
    int x,n,y;
    printf("Enter the value of x\n");
    scanf("%d",&x);
    printf("Enter the value of n\n");
    scanf("%d",&n);
    y=calculate(x,n);
    printf("The result is\n%d",y);
    return 0;
}
3. Simplified Fraction 

#include<stdio.h>
int GCD(int a,int b)
{
    if(b==0)
    return a;
    return GCD(b,a%b);
}
void fun(int a,int b)
{
    int d=1;
    if(a/b==0)
    {
        if(a<b)
        d=GCD(a,b);
        else if(b<a)
        d=GCD(a,b);
        printf("%d/%d",a/d,b/d);
    }
    else
    {
        int m=1;
        if((a%b)/b==0)
        {
            if((a%b)<b)
                m=GCD(a%b,b);
            else if((a%b)>b)
            m=GCD(a%b,b);
        }
        printf("%d %d/%d",a/b,(a%b)/m,b/m);
    }
}

void printValue(int a,int b)
{
    if(a%b==0)
    printf("%d",a/b);
    else
    fun(a,b);
}
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    printValue(a,b);
    return 0;
}
4. Array Median

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n,*arr,temp;
    printf("Enter the number of elements in the array\n");
    scanf("%d",&n);
    arr=(int*)malloc(n*sizeof(int));
    printf("Enter the elements in the array\n");
    for(int i=0;i<n;i++)
    {
    scanf("%d",arr+i);
    }
    for(int i=0;i<n;i++)
    {
        for(int j=i+1;j<n;j++)
        {
            if(*(arr+i)> *(arr+j))
            {
                temp =*(arr +i);
                *(arr+i)=*(arr+j);
                *(arr+j)=temp;
            }
        }
    }
    float median;
    if(n%2==0)
    {
        int mid=n/2;
        median=(float)(*(arr+mid-1)+ *(arr+mid))/2;
    }
    else
    median=*(arr+(n/2));
    printf("The median of the array is %.2f",median);
    return 0;
}
5. Array Range

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int *arr;
    int n;
    printf("Enter the numbe of elements in the array\n");
    scanf("%d",&n);
    arr=(int*)malloc(n*sizeof(int));
    printf("Enter the elements in the array\n");
    for(int i=1;i<=n;i++)
    {
        scanf("%d\n",arr+i);
    }
    int min=*(arr+1);
    for(int i=2;i<=n;i++)
    {
        if(*(arr+i)<min)
        {
            min=*(arr+i);
        }
    }
    int max=*(arr+1);
    for(int i=2;i<=n;i++)
    {
        if(*(arr+i)>max)
        max=*(arr+i);

    }
    int c=max-min;
    printf("The range of the array is %d",c);
    return 0;
}
6. No of Distinct Elements in an unsorted array

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int *a,n;
    scanf("%d",&n);
    a=(int*)malloc(n*sizeof(int));
    for(int i=0;i<n;i++)
    {
        scanf("%d",a+i);
    }
    int count=1;
    
    for(int i=1;i<n;i++)
    {
        int j=0;
        for( j=0;j<i;j++)
        {
            if(a[i]==a[j])
            break;
        }
            if(i==j)
            count++;
        
    }
    printf("%d",count);
    return 0;
}
7. Inversion Count 

#include<stdio.h>
#include<stdlib.h>

int main()
{
int n,*arr,count=0;
scanf("%d",&n);
arr=(int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++)
{
    scanf("%d",arr+i);
}
for(int i=0;i<n;i++)
{
    for(int j=i+1;j<n;j++)
    {
        if(*(arr+i)>*(arr+j))
        {
            int temp=*(arr+i);
            *(arr+i)=*(arr+j);
            *(arr+j)=temp;
            count++;
        }
    }
}
printf("%d",count);
return 0;
}
8.  Maximum Difference 

#include<stdio.h>
int maxdiff(int a[],int n)
{
    int max_diff=a[1]-a[0];
    int i,j;
    for( i=0;i<n;i++)
    {
        for( j=i+1;j<n;j++)
        {
            if(a[j]-a[i]>max_diff)
            {
                max_diff=a[j]-a[i];
            }
        }
    }
    return max_diff;
}
int main()
{
    int x,temp;
    scanf("%d",&x);
    int a[x];
    for(int i=0;i<x;i++)
    {
        scanf("%d",&a[i]);
    }
    temp=maxdiff(a,x);
    printf("%d",temp);
}
9. Array Type

#include<stdio.h>
#include<stdlib.h>

int findType(int n,int *arr)
{
    int even=0,odd=0;
    for(int i=0;i<n;i++)
    {
        if(*(arr+i)%2==0)
        even++;
        else
        odd++;
    }
    if(even==n)
    return 1;
    else if(odd==n)
    return 2;
    else
    return 3;
}
int main()
{
    int *arr,n;
    printf("Enter the number of elements in the array\n");
    scanf("%d",&n);
    arr=(int*)malloc(n*sizeof(int));
    printf("Enter the elements in the array\n");
    for(int i=0;i<n;i++)
    {
        scanf("%d",arr+i);
    }
    int a=findType(n,arr);
    switch(a)
    {
        case 1:printf("The array is Even");break;
        case 2:printf("The array is Odd");break;
        case 3:printf("The array is Mixed");break;
    }
    return 0;
}
10. Fruit Yielding Tree

#include<stdio.h>
#include<stdlib.h>
void find(int *a,int *max,int n)
{
    int maxx = -1,i,v,s;
    for(i=0;i<n;i++)
    {
        v=*(a+i);
        if(v>maxx)
        {
            s=i;
            maxx=v;
        }
    }
    *max=maxx;
    *(a+s)=-1;
}

int main()
{
    int *a,n,i,max=-1;
    scanf("%d",&n);
    a=(int*)malloc(sizeof(int)*n);
    for(i=0;i<n;i++)
    {
        scanf("%d",a+i);
    }
    find(a,&max,n);
    find(a,&max,n);
    printf("%d",max);
    return 0;
}