Home > OS >  This is a question from GFG. I am trying to analyse and understand this code
This is a question from GFG. I am trying to analyse and understand this code

Time:05-08

This is a code I have taken from GeeksForGeeks. I am trying to understand the code.

In the line in the function deleteEle which says if(i==n) return n, how could i become n if it is running for < n times in the for loop just above it?

    #include <iostream >
    #include <cmath>
    using namespace std;

    int deleteEle(int arr[], int n, int x)
    {
        int i = 0;

        for(i = 0; i < n; i  )
        {
            if(arr[i] == x)
                break;
        }

        cout << i << endl;
        if(i == n)
            cout<<i;
            return n;

        for(int j = i; j < n - 1; j  )
        {
            arr[j] = arr[j   1];
        }

        return n-1;
    } 

    
    int main() {
    
           int arr[] = {3, 8, 12, 5, 6}, x = 13, n = 5;
 
           cout<<"Before Deletion"<<endl;

           for(int i=0; i < n; i  )
           {
            cout<<arr[I]<<" ";
           }

           cout<<endl;

     
           n = deleteEle(arr, n, x);

           cout<<"After Deletion"<<endl;

           for(int i=0; i < n; i  )
           {
                cout<<arr[I]<<" ";
           }
    
    }

CodePudding user response:

how could I become n if it is running for < n times in the for loop just above it?

Because it may happen that the if condition arr[i] == x inside the preceding for loop is never satisfied which in turn means that the break is never executed in which case the last iteration will increment i so that i becomes equal to n.

CodePudding user response:

After the last iteration of this loop (if arr[i] != x for all i in range [0, n]):

    for(i = 0; i < n; i  )
    {
        if(arr[i] == x)
            break;
    }

i will equal n if break is not executed.

  •  Tags:  
  • c
  • Related