#include <stdio.h>

void printUnique(int* in, int n, int* out)
{
   printf("* -----------------\n");
   printf("* numero de items de entrada: %d\n", n);

   for (int i = 0; i < n ; i++)
      printf("* in[%d] = %d\n", i, in[i]);

   for (int i = 0; i < n; i++)
   {
       out[i] = in[i];

       for (int j = i + 1; j < n; j++)
       {
           if (in[i] == in[j])
           {
              // numeros em i e i+1 sao iguais, entao a partir de i+1,
              // deslocar todos os numeros 1 posicao 'a esquerda,
              // matando o numero repetido em i+1, e perdendo o ultimo
              // numero 'a direita...por isso, la' em baixo n vai precisar
              // ser decrementado, e j tambem vai precisar ser decrementado,
              // para comparar o numero em i com o novo numero em i+1
              for (int k = j+1; k < n; k++)
                  in[k-1] = in[k];
              n--; // total de numeros diminuiu
              j--; // precisa testar de novo a mesma posicao
           } // if
       } // for j
   } // for i

   printf("* numero de items unicos: %d\n", n);
   for (int i = 0; i < n; i++)
   {
       printf("* out[%d] = %d\n", i, out[i]);
   }
}

int main(void)
{
   int n;
   int in[10];
   int out[10];

   printUnique(in, 0, out);

   in[0] = 1;
   printUnique(in, 1, out);

   in[0] = 1; in[1] = 1;
   printUnique(in, 2, out);

   in[0] = 1; in[1] = 2;
   printUnique(in, 2, out);

   in[0] = 1; in[1] = 1; in[2] = 1;
   printUnique(in, 3, out);

   in[0] = 1; in[1] = 2; in[2] = 2;
   printUnique(in, 3, out);

   in[0] = 1; in[1] = 2; in[2] = 3;
   printUnique(in, 3, out);
}            