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
AI Thread Summary
The program is designed to delete an element from an array based on a user-defined offset and shift subsequent elements left. The main issue arises when the offset is zero, causing the program to terminate unexpectedly. Suggested fixes include changing the return value for a non-deletion case to -999, adjusting the condition checks for valid offsets, and repositioning the goodbye message to ensure proper program flow. Implementing these changes should resolve the termination issue and allow the program to function correctly. The discussion emphasizes the importance of handling edge cases in array manipulation.
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)
{
	cout << "Array: " << '{';
	int i = 0;
	while (i < size)
	{
		cout << theArray[i];
		if (i < size-1){cout << ',';}
		i++;
	}
	cout << '}' << endl << "Want to delete something (y/n)? ";
	char ansr;
	cin >> ansr;
	if (ansr == 'y')
	{
		cout << "Offset to delete? ";
		int offset;
		cin >> offset;
		return offset;
	}
	else if (ansr == 'n')
	{
		cout << "Goodbye!";

	}
	return 0;
}

int	arrayB(int theArray2[], int size, int offset)
{
	if ((offset >= size)||(offset < 0)){ cout << "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 'cout << "Sorry, cannot delete that." << endl;' to 'if (offset != -999){cout << "Sorry, cannot delete that." << endl;}'.
(3) Change "}while ((N > 0)&&(y != 0));" to "}while ((N > 0)&&(y != -999));".
(4) Move 'cout << "Goodbye!\n";' to the end of main(), immediately before "return 0;".

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

Similar threads

Back
Top