CalgaryCorpus a continuación explicare detalladamente.
Este programa lee un archivo .csv el cual contiene caracteres. Yo a través de otras funciones lo parseo(leo el archivo y guardo los datos en un ArrayList).
Este ArrayList ya esta declarado y inicializado en el main.c.
Una ves hecho esto, me pide que liste todos los caracteres de manera ascendente sin que se repitan.
Entonces yo pensé declarar otro ArrayList en el main.c el cual seria:
Y en este guardar los caracteres sin repetir de manera ascendente...
A continuación declaro la función
El cual se le pasan por parametros nuestros dos ArrayList(La que contiene los caracteres "ListaVieja" y la que va a guardar los nuevos caracteres sin repetir y de manera ascendente "ListaNueva").
Una ves declarada, procedo a desarrollar la función.
Aparte desarrolle la funcion:
Que es invocada anteriormente. Esta funcion recibe un puntero a la ListaNueva y un puntero al elemento que quiero verificar si existe en la ListaNueva.
Aparte de todo esto tengo declarado unas funciones que se que andan lo mas bien que sirven para mostrar elementos por pantalla. Entonces corro el programa y no me salta ningún error. Cuando eligo la opcion que me cargue la listaNueva de manera ascendente y sin caracteres. Directamente no me muestra nada. No cuelga el programa. Solamente no me muestra nada. Como si no estuvieran guardando los datos en la nueva lista.
Perdonen por tanto quilombo. Soy nuevo en esto y trato de explicar lo mejor que puedo. Gracias por su tiempo!
Este programa lee un archivo .csv el cual contiene caracteres. Yo a través de otras funciones lo parseo(leo el archivo y guardo los datos en un ArrayList).
Este ArrayList ya esta declarado y inicializado en el main.c.
Código (c) [Seleccionar]
ArrayList* listaVieja;
listaVieja= al_newArrayList(); //Esta funcion reserva memoria.
Una ves hecho esto, me pide que liste todos los caracteres de manera ascendente sin que se repitan.
Entonces yo pensé declarar otro ArrayList en el main.c el cual seria:
Código (c) [Seleccionar]
ArrayList* ListaNueva;
ListaNueva= al_newArrayList();
Y en este guardar los caracteres sin repetir de manera ascendente...
A continuación declaro la función
Código (c) [Seleccionar]
ArrayList* listaOrdenadaAscendente(ArrayList* ListaVieja, ArrayList* ListaNueva);
El cual se le pasan por parametros nuestros dos ArrayList(La que contiene los caracteres "ListaVieja" y la que va a guardar los nuevos caracteres sin repetir y de manera ascendente "ListaNueva").
Una ves declarada, procedo a desarrollar la función.
Código (c) [Seleccionar]
ArrayList* listaOrdenadaAscendente(ArrayList* ListaVieja, ArrayList* ListaNueva)
{
int i;
int len = al_len(ListaVieja); //al_len me devuelve el tamaño de ListaVieja.
eCaracter* letra; //Declaramos un puntero al tipo de dato eCaracter* que es una estructura.
//La cual usaremos como un auxiliar para que guarde la direccion de memoria de nuestros elementos que se encuentran en nuestra ListaVieja
if(ListaVieja != NULL && ListaNueva != NULL) //Verificamos que nuestras listas no sean NULL
{
for(i=0;i<len;i++)
{
letra = (eCaracter*) al_get(ListaVieja,i); //Agregamos los datos de ListaVieja al auxiliar letra.
if(comprobarSiEsRepetida(ListaNueva,letra) == 1) //Invocamos nuestra funcion comprobarSiEsRepetida que funciona como un filtro. Le pasamos la ListaNueva y el auxiliar.
//Si devuelve 1 significa que no existe ningun elemento letra que sea igual a un elemento de la ListaNueva.
{
al_add(ListaNueva,letra); //Por lo tanto sino existe lo agregamos. al_add copia el elemento letra y lo agrega a la ListaNueva.
}
}
}
return ListaNueva;
}
Aparte desarrolle la funcion:
Código (c) [Seleccionar]
int comprobarSiEsRepetida(ArrayList* ListaNueva, eCaracter* letra)
Que es invocada anteriormente. Esta funcion recibe un puntero a la ListaNueva y un puntero al elemento que quiero verificar si existe en la ListaNueva.
Código (c) [Seleccionar]
int comprobarSiEsRepetida(ArrayList* ListaNueva, eCaracter* letra)
int i, index = -1;
eCaracter* aux; //Declaramos un auxiliar de tipo eCaracter* para guardar los elementos que contiene la ListaNueva.
int len = al_len(ListaNueva); //Esta funcion nos devuelve el tamaño de len
if(ListaNueva != NULL && letra != NULL)
{
for(i=0;i<len;i++)
{
index = 1;
aux = (eCaracter*) al_get(ListaNueva,i); // Agregamos los datos de la nueva lista al auxiliar.
if(get_Caracter(aux) == get_Caracter(letra)) // Comparamos si los datos del auxiliar de la nueva lista son iguales al de la vieja lista.
{
index = 0;
break;
}
}
}
return index; //Si retorna 1 no existe el elemento. Si retorna 0 existe.
}
Aparte de todo esto tengo declarado unas funciones que se que andan lo mas bien que sirven para mostrar elementos por pantalla. Entonces corro el programa y no me salta ningún error. Cuando eligo la opcion que me cargue la listaNueva de manera ascendente y sin caracteres. Directamente no me muestra nada. No cuelga el programa. Solamente no me muestra nada. Como si no estuvieran guardando los datos en la nueva lista.
Perdonen por tanto quilombo. Soy nuevo en esto y trato de explicar lo mejor que puedo. Gracias por su tiempo!