I am trying to use the following remove() function in the main() function. Please let me know what is wrong with my current code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
float remove(float a[], int& n, int i);
int main() {
float a[]={56.8, 14.2, 0.2, 22.3, 3.3, 54.02, 543.33, 456,333, 1.1};
int size, del;
size =sizeof(a)/sizeof(a[0]);
cout<<"Enter the element to be deleted!";
cin >>del;
cout << "Removed= "<< remove(a, size, del) << "\n";
}
float remove(float a[], int& n, int i){
for (int j=i+1; j<n; j++)
a[j-1] = a[j];
--n;
}
|
Last edited on
The function remove doesn't return anything. So what is this meant to do:
<< remove(a, size, del)
Given that the function remove doesn't return anything, what are you passing to << to be output? It makes no sense.
Sorry, I updated the code.
That is right, so I should add a return at the end?
1 2 3 4 5 6
|
float remove(float a[], int& n, int i){
for (int j=i+1; j<n; j++)
a[j-1] = a[j];
--n;
return i;
}
|
Last edited on
But the code does not work correctly. When I enter 3, for instance, it outputs 3.
I want to be have the removed element displayed on the screen. I mean if I, for instance, enter 3, I want to have 22.3 displayed.
If you'd named your parameters with meaningful names, this would have been an awful lot clearer from the start.
1 2 3 4 5 6 7 8 9 10 11
|
float remove(float* array, int& size_of_array, int element_to_remove)
{
float value_to_remove = array[element_to_remove];
for (int j=element_to_remove; j< size_of_array; j++)
{
array[j-1] = array[j];
}
size_of_array--;
return value_to_remove;
}
|
The actual last value in the array will still be there. So if you went to remove the first value, the array would look like this afterwards:
14.2, 0.2, 22.3, 3.3, 54.02, 543.33, 456,333, 1.1,
1.1
But if you now treat the array as being of size 9, that's not something you have to worry about.
Last edited on