How can I fix my program to properly delete elements from an array?

  • Thread starter Thread starter sandy.bridge
  • Start date Start date
  • Tags Tags
    Array Element
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 2K views
sandy.bridge
Messages
797
Reaction score
1

Homework Statement


Hey all. I have code that is supposed to delete the offset determined by the user and shift the elements after that offset to the left. My code works fine except for one problem: if the index is zero it terminates. I will post my code, and if anyone can see why it is giving me this problem, I would greatly appreciate it!

The Attempt at a Solution



PHP:
#include <iostream>
using namespace std;

int arrayA(int theArray[],int size)
{
	count << "Array: " << '{';
	int i = 0;
	while (i < size)
	{
		count << theArray[i];
		if (i < size-1){count << ',';}
		i++;
	}
	count << '}' << endl << "Want to delete something (y/n)? ";
	char ansr;
	cin >> ansr;
	if (ansr == 'y')
	{
		count << "Offset to delete? ";
		int offset;
		cin >> offset;
		return offset;
	}
	else if (ansr == 'n')
	{
		count << "Goodbye!";

	}
	return 0;
}

int	arrayB(int theArray2[], int size, int offset)
{
	if ((offset >= size)||(offset < 0)){ count << "Sorry, cannot delete that." << endl; return size;}
	for (int m = offset + 1; m < size; m++)
	{
		theArray2[m-1]=theArray2[m];
	}
    size--;

	return size;
}
int main() {
	int N = 10;
	int y;
	int fling[]={1,2,3,4,5,6,7,8,9,10};

	do{
	y = arrayA(fling, N);
	N = arrayB(fling, N, y);

	}while ((N > 0)&&(y != 0));
	return 0;
}
 
Physics news on Phys.org
sandy.bridge: To repair your program, do the following.

(1) Change your first "return 0;" to "return -999;".
(2) Change 'count << "Sorry, cannot delete that." << endl;' to 'if (offset != -999){count << "Sorry, cannot delete that." << endl;}'.
(3) Change "}while ((N > 0)&&(y != 0));" to "}while ((N > 0)&&(y != -999));".
(4) Move 'count << "Goodbye!\n";' to the end of main(), immediately before "return 0;".

Try it, and see if it now works.
 
Last edited: