In this example , we check two array are equal or not
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool checkarray(int arr1[], int arr2[], int size_arr1, int size_arr2){
if(size_arr1 != size_arr2)
return false;
//sort both array
sort (arr1, arr1+size_arr1);
sort (arr2, arr2+size_arr2);
for(int i=0; i< size_arr1; i++)
if(arr1[i] != arr2[i])
return false;
return true;
}
int main(){
int arr1[] = {1,2,4,7,9};
int arr2[] = {2,4,6,9,1};
int size_arr1 = sizeof(arr1)/sizeof(int);
int size_arr2 = sizeof(arr2)/sizeof(int);
//Function call
if(checkarray(arr1,arr2,size_arr1,size_arr2))
cout<<"Equal"<<endl;
else
cout<<"Not Equal";
}
Output:
Not Equal
Explanation:
Step 1: Including Libraries and Namespace
The code includes essential libraries for input/output operations and algorithm functions (like sorting):
#include <iostream>
#include <bits/stdc++.h> // Includes all standard C++ libraries (commonly used in competitive programming)
using namespace std;
Step 2: Function: checkarray
The checkarray
function takes two arrays (arr1
and arr2
) and their sizes as arguments and checks whether the arrays are equal in terms of their elements (regardless of the order).
Steps of the Function:
- Check if Arrays Have Equal Size:
- The function first checks if the two arrays have the same size. If not, it returns
false
, because arrays of different sizes cannot be equal.
- The function first checks if the two arrays have the same size. If not, it returns
if (size_arr1 != size_arr2)
return false;
2. Sorting Both Arrays:
- The function sorts both arrays using the
sort()
function from the<algorithm>
library. Sorting ensures that if the arrays have the same elements but in different orders, they will become identical after sorting.
sort(arr1, arr1 + size_arr1); // Sort arr1
sort(arr2, arr2 + size_arr2); // Sort arr2
Error in Sorting: There is an issue with the sorting line for arr1
. It should be:
sort(arr1, arr1 + size_arr1);
The original code mistakenly tries to sort arr1
using the range [arr1, arr2+size_arr1]
, which mixes both arrays. You should sort arr1
in the range arr1, arr1+size_arr1
.
- Compare the Sorted Arrays:
- After sorting, the function compares both arrays element by element. If any corresponding elements differ, the function returns
false
, indicating the arrays are not equal.
- After sorting, the function compares both arrays element by element. If any corresponding elements differ, the function returns
for (int i = 0; i < size_arr1; i++)
if (arr1[i] != arr2[i]) // If any element is not equal, return false
return false;
4. Return true
:
- If all the elements are identical, the function returns
true
, meaning the arrays are equal.
return true;
Step 3: Main Function
The main()
function initializes two arrays, calculates their sizes, and calls the checkarray
function to determine if the arrays are equal.
int main(){
int arr1[] = {1, 2, 4, 7, 9}; // First array
int arr2[] = {2, 4, 6, 9, 1}; // Second array (with a different element)
// Calculating the sizes of the arrays
int size_arr1 = sizeof(arr1) / sizeof(int); // Number of elements in arr1
int size_arr2 = sizeof(arr2) / sizeof(int); // Number of elements in arr2
// Function call to check if arrays are equal
if (checkarray(arr1, arr2, size_arr1, size_arr2))
cout << "Equal" << endl;
else
cout << "Not Equal" << endl;
return 0;
}
Explanation of Key Parts:
- Array Initialization: Two arrays are initialized with hardcoded values:
arr1
:{1, 2, 4, 7, 9}
arr2
:{2, 4, 6, 9, 1}
arr2
contains6
instead of7
.
int arr1[] = {1, 2, 4, 7, 9};
int arr2[] = {2, 4, 6, 9, 1};
2. Size Calculation: The size of each array is calculated by dividing the total memory allocated for the array (sizeof(arr1)
) by the memory size of a single element (sizeof(int)
). This gives the number of elements in each array.
int size_arr1 = sizeof(arr1) / sizeof(int);
int size_arr2 = sizeof(arr2) / sizeof(int);
3. Function Call: The checkarray()
function is called with arr1
, arr2
, and their respective sizes. The result is used to print whether the arrays are equal or not.
if (checkarray(arr1, arr2, size_arr1, size_arr2))
cout << "Equal" << endl;
else
cout << "Not Equal" << endl;