Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - ElpIOLA20

#1
Programación C/C++ / Ejercicio en C
10 Agosto 2018, 01:33 AM
Hola a todos! Estoy comenzando a estudiar programación. Y necesito ayuda con un ejercicio. La verdad es que ya intente de varias formas y no me sale. Quisiera por lo menos alguna pista. Seguramente ustedes sabrán alguna manera de hacerlo.
El ejercicio es el siguiente:

Tengo un archivo. Lo parseo, osea lo leo y lo guardo en un ArrayList. Hasta acá todo bien. El archivo contiene caracteres. Osea 'a', 'b', 'z', '4' etc.
El ejercicio me pide que haga una lista con todos los caracteres que tengo en el arraylist de manera ascendente y que aparezcan una ves cada uno. (porque hay varios caracteres que se repiten). El problema es que no se me ocurre como hacer una función que me los liste sin que se repitan.

ArrayList* listaOrdenadaAscendente(ArrayList* this, ArrayList* this2)
{
   int i;
   int len = al_len(this);
   eCaracter* letra;
   if(this != NULL && this2 != NULL)
   {
       for(i=0;i<len;i++)
       {
           letra = (eCaracter*) al_get(this,i); //asignamos los elementos del arraylist a la estructura,
           if(comprobarSiEsRepetida(this2,letra) == 1)
           {
               al_add(this2,letra); //agregamos los elementos a la nueva lista que van asignados los caracteres sin repetir.
           }
           else
           {
               al_remove(this2,i); //si ya existe el caracter lo elimino
           }
       }
   }
   return this2;
}

int comprobarSiEsRepetida(ArrayList* this, eCaracter* letra)
{
   int i, index = -1;
   eCaracter* aux;
   int len = al_len(this);
   if(this != NULL && letra != NULL)
   {
       for(i=0;i<len;i++)
       {
           aux = (eCaracter*) al_get(this,i);
           if(get_Caracter(aux) == get_Caracter(letra)) //Comparamos si son iguales
           {
               index = 0;
               break;
           }
           else
           {
               index = 1;
               break;
           }
       }
   }
   return index;
}


Gracias por su tiempo!