[ Foro de C ]
Tengo este codigo que elimina los elementos repetidos de un array.
Lo que quiero hacer es insertar a la derecha de cada numero, cuantas veces se repitio.
Ejemplo: si la lista es 0, 90, 76, 0, 67, 90, 90; la
lista compactada será 0, 2, 90, 3, 76, 1, 67, 1.
¿Cómo podría hacerlo?
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;
}
}
}
}
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)