Have you ever seen the rain?



I wanna know, have you ever seen the rain?

Si, un día lluvioso.

Árboles AVL

El objetivo es leer un archivo "csv" que contendrá los números que queremos insertar en un árbol AVL, sus tres recorridos y su altura serán impresos en un nuevo archivo junto con el camino de un número que se desee buscar.



Descarga del código y más información en 'Leer más' (LOL)

De CSV a int *

Esta es nuestra solución para leer datos del tipo entero de un archivo CSV:

Nuestra fución devuelve un apuntador y recibe una cadena; primero definimos y asignamos valores a las variables que ocuparemos.

int * leerDatos(char * arc){
    int * resultado = NULL;//Aquí guardaremos el resultado
    int numelem = 0;//El número de elementos en el archivo, necesario para reservar memoria dinámicamente
    int n=1;
    FILE * fp = fopen(arc, "r");//Arbimos el archivo 'arc' solo para lectura.
    char * linealeida = (char *)calloc(tamano,sizeof(char));
    char * auxlinea = (char *)calloc(tamano,sizeof(char));
    /* 'tamano' es el numero aproximado de caracteres en nuestro archivo recomendamos, definirlo previamente */
    char * tokens;
También, es recomendable tomar alguna acción si nuestro archivo no pudo ser abierto correctamente.

Leemos la línea, y la copiamos a un auxiliar dado que la función que usaremos para separar los valores de las comas destruye la cadena y la necesitaremos dos veces. La función más importante es strtok(), de la cual, en el vínculo encontrarás más información.

// :)
    fgets(linealeida, tamano, fp);
    strcpy(auxlinea,linealeida);
    tokens = strtok(linealeida, "," );//Comenzamos a separar los valores entre las comas.
    while((tokens = strtok( NULL, "," )) != NULL )//Continuamos hasta que no haya más que separar.
        numelem++;//Aumentamos la cantidad de elementos que hay.

Reservamos memoria para guardar todos los elementos, más uno, dado que dentro del arreglo también guardaremos la cantidad de dígitos que leímos del archivo. En otras palabras dentro del arreglo guardaremos el tamaño del arreglo menos uno.

En este bloque de código, también usamos el auxiliar de cadena ya que en el bloque anterior la cadena inicial linealeida quedó vacía gracias a la función strtok(). Información acerca de atoi()

resultado=(int *)malloc(sizeof(int)*(numelem+1));
    resultado[0] = numelem;//La entrada 0 de nuestro arreglo, guardará la longitud del mismo menos 1
    tokens = strtok(auxlinea, "," );//Comenzamos a separar los valores de nuevo
    do{//Con atoi() convertiremos de char * a int.
      resultado[n++]=atoi(tokens);
    }while((tokens = strtok( NULL, "," )) != NULL );
    fclose(fp);//Cerramos nuestro archivo para evitar problemas posteriores
    return resultado;//Por último, regresamos el arreglo con los datos
}

Si, parte de nuestro proyecto de Estructura de datos. (descarga el código completo)


Agradecimientos a mi querida compañera de equipo Iraís con quien hacer tarea hasta da gusto :)

¡Saludos! @fferegrino :)

Mis bookmarks de ocio (II)

Hace tiempo publiqué algunos de las páginas que me he encontrado por internet, hoy vuelvo a publicar otras tantas que me han parecido interesantes y como para perder el tiempo.

Ie6 Error - Pinta con el error de internet explorer 6 (Can your Mac do this?).

˙ɐuıƃɐd ɐʇsǝ uǝ sɐɹǝınb ǝnb oʇxǝʇ lǝ ɐǝʇloʌ - ʇxǝʇ dılɟ

YTTM - ¿Quieres recordar viejos tiempos?, elige un año para ver videos que se hicieron en ese tiempo.

Portrait - Para hacer avatares, ¡crea el tuyo!

(Y que @MarveenRuiz me diga que que pinche tan geek)

¡Saludos! @fferegrino :)

Nuevas vistas dinámicas en Blogger

Muchos dicen que Blogger es una plataforma deficiente, en lo cual no estoy de acuerdo. Si bien no ofrece los mismos servicios que servicios como WordPress o Tumblr, está trabajando para mejorarlo constantemente y una muestra de ello son las nuevas vistas dinámicas que ofrecen una interfaz grafica muy atractiva y recuerda la esencia táctil del los tablets.

Visita las vistas dinámicas de este blog en el siguiente enlace.

¡Saludos! @fferegrino :)

Don't fear


Come on baby... don't fear the reaper
Baby take my hand... don't fear the reaper
We'll be able to fly... don't fear the reaper



¡Saludos! @fferegrino |:)

Original of the species


I want nothing that you're not



¡Saludos! @fferegrino |:D