martes, 15 de enero de 2013

Ordenación de una lista de nombres


Seguimos con el tema de la ordenación de una lista de nombres, como hemos prometido. La cosa resultó más fácil de lo que creía. Todo está en "descubrir" las funciones de cadena; en este caso, strcmp, que es la que compara cadenas y puede ordenarlas de menor a mayor, y strcpy, que es la más indicada para introducir cadenas. Yo estaba empeñado en hacerlo de una forma directa, como hacíamos en BASIC. Los que aprendimos con BASIC estamos mal acostumbrados. En BASIC todo resultaba más fácil, la verdad, aunque supongo que por otro lado estaríamos más limitados. Para manejar cadenas en C todo hay que hacerlo con funciones propias de cadena: strcpy, strcmp, strlen, strcat,.. y también gets, puts, getchar, putchar, etc.
Lo de tratar matrices y vectores también resulta más complicado. En BASIC, si no recuerdo mal, a(30) significaba que reservábamos memoria para 30 cadenas de cualquier longitud; en C a[30] significa que puedes alojar una cadena de 30 caracteres, solo una, pues cualquier otra te pisaría la anterior. Sin embargo, en BASIC a(10,30) significa simplemente que tienes sitio para 300 cadenas que por comodidad puedes nombrar así; a(1,1), a(1,2), etc. En C a[10][30] significa que tienes sitio exactamente para 10 cadenas de 30 caracteres cada una como máximo. En fin, que estamos "viciados" en ese sentido. Esto es como en el tema de las marchas; hay coches en los que la primera se mete llevando la palanca hacia atrás, mientras que en otros esa es la segunda...
En fin, el programa funciona y no se arruga por muchos nombres que le metas, porque siempre procede de la misma manera. Es muy fácil adaptarlo a teclado, pero no lo recomiendo, porque te agotas escribiendo nombres para hacer pruebas.

2 comentarios:

  1. ¡Madre mía del amor hermoso!
    Ahora ya si que no te sigo. Se nota que tienes mucho feeling con la programación.

    Ah!, no sabía que en algunos coches la primera se metía con la palanca hacia atrás, como no sean los autobuses...
    ¿Ves?, nunca te acostarás sin saber una cosa más.

    Besos.

    ResponderEliminar
    Respuestas
    1. Siii, yo aprendi a conducir con un Toyota de esos de guerra. Allí era primera hacia atrás, luego segunda hacia la derecha y arriba y tercera hacia atrás. Quedé también "viciado" con ese sistema.

      Eliminar