我是c ++编程的新手,我在编写这个函数时遇到了问题。我已经写了一些代码(见下文),但我不知道出了什么问题。请帮我。谢谢。
这是数组:char marbles [10] = {'B','G','R','P','B','G','R','P', 'B','G'};
(a)此函数接受字符数组和该数组的大小,并删除偏移pos处的元素。偏移量大于pos的元素都被移位以填补间隙。 这是我的代码,但我不确定它是否正确。
void deletePosition(char arr[], int size, int pos)
{
for (int i = pos; i < size - 1; i = i + 1)
{
arr[i] = arr[i + 1];
}
size = size - 1;
}
(b)此函数接收一个字符数组,表示一系列彩色大理石以及数组的大小。它删除共享相同颜色的2个或更多个大理石的所有序列,并且由于删除而返回阵列的新大小。应使用“deletePosition”函数(上面的部分(a))来执行单个删除。
这是我的代码,但我不知道出了什么问题
int deleteMarbles(char marbles[], int size)
{
int i, j;
for (i = 1; i < size; i=i+1)
{
for (j=0; j<i; j=j+1)
{
if (marbles[i] == marbles[j])
{
deletePosition(marbles, size, i);
deletePosition(marbles, size, j);
}
}
}
return size;
}
答案 0 :(得分:1)
您的deletePostion()
需要参考size
:
void deletePosition(char arr[], int& size, int pos)