如何在c中删除相同的数字并移动数组以删除它们

如何在c中删除相同的数字并移动数组以删除它们,c,C,我一直试图解决这个问题,但没有成功。我有一个数组,希望删除仅相邻的重复出现的值。稍后我想调整数组的大小以去掉这些值 这是初始数组: A[] = {1,2,2,2,3,4,5,6,7} 这就是最终结果的样子 A[] = {1,2,3,4,5,6,7} 这是我一直在玩的代码。这似乎有一个主要的逻辑缺陷。。。正如下面的一篇文章所说,我正在尝试将不同的值放入另一个数组中 int A[]= {1,2,2,2,3,4,5,6,7}; int B[20]; int indexB = 0; int mai

我一直试图解决这个问题,但没有成功。我有一个数组,希望删除仅相邻的重复出现的值。稍后我想调整数组的大小以去掉这些值

这是初始数组:

A[] = {1,2,2,2,3,4,5,6,7}
这就是最终结果的样子

A[] = {1,2,3,4,5,6,7}
这是我一直在玩的代码。这似乎有一个主要的逻辑缺陷。。。正如下面的一篇文章所说,我正在尝试将不同的值放入另一个数组中

int A[]= {1,2,2,2,3,4,5,6,7};
int B[20];
int indexB = 0;

int main()
{
   for (int i=0;i<7;i++)
   {
       if(A[i] != B[indexB] ){
        B[indexB] = A[i];

        if(A[i+1] != B[indexB] ){
            indexB++;
        }
       }
   }


   printf("%d \n", indexB); // Printing how many values the new array would have

    return 0;
}
inta[]={1,2,2,3,4,5,6,7};
int B[20];
int indexB=0;
int main()
{
对于(int i=0;i简单的基本解是,
如果要删除连续的重复项

  • 逐个迭代数组
  • 并仅在以下情况下将元素复制到另一个数组:
  • 当前元素与上一个元素不同

您可以执行以下操作:

int A[]= {1,2,2,2,3,4,5,6,7};
int B[20];
int indexB = 0;
int i;

 int main()
{
   for (i = 0;i <= 7;++i)
   {
       if(A[i] != A[i+1]){
           B[indexB++] = A[i];
       }
       else {
           continue;
        }
    }

B[indexB++] = A[i];

printf("%d \n", indexB); // Printing how many values the new array would have

return 0;
}
inta[]={1,2,2,3,4,5,6,7};
int B[20];
int indexB=0;
int i;
int main()
{

对于(i=0;我可以与您分享您迄今为止的尝试/遇到的困难首先,您需要意识到,一旦定义了数组,它的大小是固定的。无法调整数组的大小。至于“删除”或“擦除”问题连续重复,只要搜索一点,就会有大量的资源和示例。一个简单的方法是逐元素将数组复制到自身,如果前一个元素等于当前元素,则跳过复制。一旦到达末尾,用零(或其他合适的值)填充其余的元素。“我一直在尝试解决此问题”-您的问题应包括最接近成功的尝试,以及迄今为止您为调试问题而采取的步骤。您无法调整数组的大小。您可以(例如)检查它,用列表中的下一个数字覆盖重复数字,并填写“已删除”带零的空格然后将内容复制到所需大小的新数组中。但是,如果您不显示您尝试的内容以及它不起作用的原因,我们将不会为您编写代码。我正在尝试,但我的代码中似乎有一个逻辑缺陷。我将其附加到我的问题中。也许您可以发现我犯的错误,因为我无法:(感谢您的回复,但是使用这种方法,我得到的新数组将有5个值,而它本来应该有7个值values@frankmitchelle实际上,返回的是6而不是5。现在已经修复了,我忘记了最后一个数字,因为它没有被插入,因为我们将通过检查超出数组大小。可能有更好的方法来实现,但是这是我在现场发现的,与你已经拥有的相似。