return an element whose sum of left side and right side is equal in the array

Find the index of equilibrium element in the given array. In an array equilibrium element is the one where the sum of all the elements to the left side is equal to the sum of all the elements in the right side.
Return Value:
1) Return -1 if no equilibrium element is found
2) In case there is more than one equilibrium element, return the element with least index value.
You are required to complete the given code by reusing the existing function. You can click on Compile & run anytime to check the compilation/execution status of the program you can use printf to debug your code. The submitted code should be logically/syntactically correct and pass all the test cases.

solution:

#include<stdio.h>
int left_side_sum(int a[], int n, int idx)
{
    int sum = 0, i;
    for(i = 0; i < idx; i++)
    {
        sum += a[i];
    }
  
    return sum;
}

// Return the sum of elements from index (idx + 1) to (n – 1)
int right_side_sum(int a[], int n, int idx)
{
    int sum = 0, i;
    for(i = idx + 1; i < n; i++)
    {
        sum += a[i];
    }
  
    return sum;
}

// returns -1 if no equilibrium index found
int findEquilibriumIndex(int a[], int n)
{
        int i;
    for(i = 0; i < n; i++)
    {
        if(left_side_sum(a, n, i) == right_side_sum(a, n, i))
        {
            return i;
        }
    }
  
    return -1;
}

int main()
{
              //code
   int a[10], n, i;
   // get the elements count
   scanf("%d",&n);
   // get the array elements
   for(i=0; i<n; i++)
   {
       scanf("%d",&a[i]);
   }
 
   int equiIndex = findEquilibriumIndex(a, n);
   if(equiIndex != -1)
   {
       printf("%d", a[equiIndex]);
   }
 
   return 0;
}

input:
6
1 2 3 4 3 3
output:
4

No comments:

Post a Comment