ELIMINAR REPETIDOS DE UN ARRAY
Publicado por Franco (3 intervenciones) el 20/11/2020 07:22:19
Tengo este codigo que elimina los elementos repetidos de un vector. Necesito compactarlo eliminando los repetidos, pero insertando a la
derecha de cada número su frecuencia de aparición.
Ejemplo: si la lista es 0, 90, 76, 0, 67, 90, 90; la
lista compactada será 0, 2, 90, 3, 76, 1, 67, 1.
derecha de cada número su frecuencia de aparición.
Ejemplo: si la lista es 0, 90, 76, 0, 67, 90, 90; la
lista compactada será 0, 2, 90, 3, 76, 1, 67, 1.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void elimina_repetidos(lista v, int* N){
int i,j,k,cont=0;
for(i = 0; i < *N; i++)
{
for(j = i+1; j < *N; j++)
{
if(v[i] == v[j])
{
cont=cont+1;
k = j;
while(k < *N)//Mientras k sea menor que la cantidad de elementos
{
v[k] = v[k+1];//Copiará el elemento siguiente,
//Ejemplo en posición 1 copiará el valor de la posición la dos, y en la dos la tres y así sucesivamente.
++k;//Aumentamos el contador k en 1
}
--*N;//Disminuimos el tamaño del vector ya que se eliminaron elementos repetidos.
--j;
}
}
}
}
Valora esta pregunta


0