[C con Clase] vector ordenado

Daniel de Dios El Ignorado Daniel.deDios en hotmail.com
Mie Ene 11 01:28:22 CET 2017


Hola Ana:


¡¡Uffff!!  Mucho ha cambiado el C, o yo no he sabido C, en mi vida.  He visto tan raro tu código que lo he tenido que probar para ver si era factible que "eso" funcionara.   Pues si que compilaba, y hasta se podía ejecutar y todo.  Ordenaba mal, pero eso era lo de menos.


En mis tiempos los parámetros se pasaban por valor, y no por referencia.  Y los miembros de una estructura u objeto se tenían que copiar uno a uno, o en el caso de objetos, hacer un constructor de copia.


Bueno, bueno, menos literatura, y vamos al grano.  el error lo tienes en esta línea siguiente.


if (ordenado[j].nombre < p[j - 1].nombre)


La tienes que corregir así:


if (ordenado[j].nombre < ordenado[j - 1].nombre)

La tabla p[], hasta el momento, sigue con los valores originales.  Aprovechando el pase por referencia de la tabla, en el programa que te envío, también he creado otra función que ordena al contrario, y que prescinde de la tabla "ordenado", y de la asignación final de "ordenado" a "p", si quieres puedes reconvertir tu función de la misma manera.


Saludos
Daniel de Dios "El Ignorado"



________________________________
De: Cconclase <cconclase-bounces en listas.conclase.net> en nombre de Ana Pallares Vilar <anapallares20 en gmail.com>
Enviado: sábado, 7 de enero de 2017 11:42
Para: Lista de correo sobre C y C++
Asunto: [C con Clase] vector ordenado

Hola me podrian decir que es lo que falla en este procedimiento? Es que solo me ordena los dos primeros el resto se los deja y no encuentro el fallo
Gracias

void FicheroOrdenado (persona p[TAM], short num)
{
short i, j, k;
persona orden, ordenado[TAM];
if (num > 1)
{
for (i = 0; i < num; i++)
{
ordenado[i] = p[i];
if (i > 0)
{
for ( j = i; j > 0; j--)
{
if (ordenado[j].nombre < p[j - 1].nombre)
{
orden = ordenado[j];
ordenado[j] = ordenado[j - 1];
ordenado[j - 1] = orden;
}
}
}
}
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20170111/445526be/attachment.html>
------------ próxima parte ------------
An embedded and charset-unspecified text was scrubbed...
Name: PruAna.cpp
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20170111/445526be/attachment.ksh>


Más información sobre la lista de distribución Cconclase