使用函数从c ++中删除数组中2个或更多元素的序列?

时间:2013-11-01 04:01:58

标签: c++ arrays

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

1 个答案:

答案 0 :(得分:1)

您的deletePostion()需要参考size

void deletePosition(char arr[], int& size, int pos)