1

我是 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; 
}
4

1 回答 1

1

deletePostion()需要size参考:

void deletePosition(char arr[], int& size, int pos) 
于 2013-11-01T04:04:24.603 回答