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
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