Implement a function RemoveEven( int *& arr, int n ) which takes an array arr and its size and removes all the even elements from a given array.
Input
5 1 2 3 4 5Output
1 3 5
Solution
#include<iostream>
using namespace std;
int NewArraySize=0;
int * RemoveEven(int *& arr, int n){
int * NewArray=new int[]{};
for (int i=0;i<n;i++){
if ((arr[i]%2)==1){
NewArray[NewArraySize++]=arr[i];
}
}
delete [] arr;
arr=NewArray;
return arr;
}
int main(){
// Array size
int n=0;
cin>>n;
// Array
int * arr=new int[n]{};
for (int i=0;i<n;i++){
cin>>arr[i];
}
// Calling the funciton
arr = RemoveEven(arr,n);
// Printing the new array
for (int i=0;i<NewArraySize;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
return 0;
}
Here inside the function RemoveEven()we created a new dynamic array NewArraywhich will be used to store the odd element. Next, we are using a for loop to check if an element in an array of index i is odd or even if the reminder is 1 then it is an odd number, it will be pushed in the NewArray and then the variable NewArraySize will be + 1 so we can keep track of the size of the array as we can’t get the dynamic array size with sizeof() function. After, we have successfully added all the odd number elements in the NewArray we will delete all the elements of the arr as we want to copy the NewArray elements in arr and then return it.
Run the code with
g++ -std=c++20 fileName.cpp -o a.outand./a.out
Top comments (0)