0% found this document useful (0 votes)
99 views8 pages

Find The Syntax Error in The Below Code Without Modifying The Logic

The document contains 3 code snippets with errors and their solutions. The first snippet has a syntax error because a float value is used in a switch statement, which requires an integral type. The second snippet has a logical error due to a semicolon terminating the second for loop. The third snippet is incomplete code to find the equilibrium index in an array, which needs to be completed by calling the existing left_side_sum and right_side_sum functions in a for loop.

Uploaded by

sona
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
99 views8 pages

Find The Syntax Error in The Below Code Without Modifying The Logic

The document contains 3 code snippets with errors and their solutions. The first snippet has a syntax error because a float value is used in a switch statement, which requires an integral type. The second snippet has a logical error due to a semicolon terminating the second for loop. The third snippet is incomplete code to find the equilibrium index in an array, which needs to be completed by calling the existing left_side_sum and right_side_sum functions in a for loop.

Uploaded by

sona
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

Find the 

syntax error in the below code without modifying the logic.

#include
int main() 
{
   float x = 1.1;
   switch (x)
   {
       case 1: printf("Choice is 1");
                 break;
       default: printf("Invalid choice");
                break; 
   }
   return 0;
}
Answer:

#include
int main() 
{
   int x = 1;
   switch (x)
   {
       case 1: printf("Choice is 1");
                 break;
       default: printf("Invalid choice");
                break; 
   }
   return 0;
}

The expression used in the switch must be an integral type (int, char, and
enum). Any other type of expression is not allowed.

2) Find the logical error in the below code.

void main () {
  int i, j, n = 5;
  for(i=1; i<n; i++)
 {
for(j=i;j<n;j++);
{
        printf("%d", i);
}
printf("\n");
 }
}
Solution:

void main () {
  int i, j, n = 5;
  for(i=1; i<n; i++)
 {
              for(j=i;j<n;j++)
{
printf("%d", i);
   }
    printf("\n");
 }
}
we use a semicolon in C statement to tell the compiler where's the
end of our statement. Second for loop executes one time.
3) Complete the below code by reusing the existing function.

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.
Code approach For the question:

You will need to correct the given implementation.


We do not expect you to modify the approach or incorporate any
additional library methods.

Test Case:

a[] = {1,2,3,4,3,3}. 4 is the equilibrium element since its left side sum
(1+2+3) is equal to its right side sum (3+3)

#include <stdio.h>
// Return the sum of elements from index 0 to (idx - 1)
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)
{
    // Type your code here
}

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;

Solution:

// Return the sum of elements from index 0 to (idx - 1)


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)
{
    // Type your code here
    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 elementsfor(i=0; i<n; i++)
   {
       scanf("%d", &a[i]);
   }

   int equiIndex = findEquilibriumIndex(a, n);


   if(equiIndex != -1) {
       printf("%d", a[equiIndex]);
   }

   return 0;
}

You might also like