gpt4 book ai didi

c - 我希望 vector_total 没有任何重复的数字

转载 作者:行者123 更新时间:2023-11-30 15:09:06 25 4
gpt4 key购买 nike

我需要 vector_total 没有任何重复的数字。

在 main() 中声明的入口 vector 1 和 vector 2 的函数。

void entrada_vectors(int vector1[], int vector2[], int vector_total[], int *n, int *m)
{
int i=0, j=0;

/*Entrarem els nombres del vector 1 primer */

for (i=0; i<*n; i++)
{
vector_total[i]=vector1[i];
}

/*Entrarem els nombres del vector 2 després */

for (i=*n; i<*n+*m; i++)
{
if (j<*m)
{
vector_total[i]=vector2[j];
j++;
}
}
}

函数 2。这是针对 vector_total 中的订单号。

void ordena(int vector_total[], int *n, int *m)
{
int i=0, j=0;
int aux=0;

for (i=0; i<*n+*m-1; i++)
{
for (j=0; j<*n+*m-1; j++)
{
if (vector_total[j]>vector_total[j+1])
{
aux=vector_total[j];
vector_total[j]=vector_total[j+1];
vector_total[j+1]=aux;
aux=0;
}
}
}
}

函数3.打印vector_total

void mostra(int vector_total[], int *n, int *m )
{ int i;

for (i=0; i<*n+*m; i++)
{
printf ("Pos %d del vector: %d\n", i, vector_total[i] );
}
}

函数4。问题来了!!这个函数是为了清理我的vector_total并删除重复的数字。

void limpiar_repetidos(int vector_total[], int *n, int *m)
{
int x=0, i=0, j=0;

for (i=0; i<*n+*m-1; i++)
{
for (j=0; j<*n+*m-1; j++)
{
if (vector_total[j]==vector_total[j+1])
{
x=j+1;
for (i=*n+*m; i>x; i--)
{
vector_total[i-1]=vector_total[i];

}
}
}
}
}

这是我的主要内容。我的声明变量:

int vector 1[]={7,1,5,3,4,2};

int vector 2[]={3,7,3,0,9,10};

int n=sizeof( vector 1)/sizeof( vector 1[0]);

int m=sizeof( vector 2)/sizeof( vector 2[0]);

int vector 总[n+m];

main()

{ entrada_vectors( vector 1、 vector 2、 vector _总、&n、&m);

ordena(vector_total, &n, &m);

mostra(vector_total, &n, &m);

limpiar_repetidos(vector_total, &n, &m);
printf ("==================\n");

mostra(vector_total, &n, &m);

返回0;}

谢谢大家! :)

最佳答案

1) 如果函数仅处理 vector_total ,则 vector_total 的长度最好传递一个参数。另外,如果指针不会改变,则不需要传递指针。

void mostra(int vector_total[], int len){
int i;

for (i=0; i<len; i++) {
printf ("Pos %d del vector: %d\n", i, vector_total[i] );
}
}

2) 删除元素后函数需要新的长度。另外,删除相邻的相同元素也可以像这样。

int limpiar_repetidos(int vector_total[], int len){//int *n, int *m --> int len
int i, size, new_size;

size = len;
for(i = new_size = 1; i < size; ++i){
if(vector_total[new_size-1] != vector_total[i])
vector_total[new_size++] = vector_total[i];
}
return new_size;
}

使用示例

mostra(vector_total, m + n);

int l = limpiar_repetidos(vector_total, n + m);

mostra(vector_total, l);

关于c - 我希望 vector_total 没有任何重复的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36876495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com