PDA

View Full Version : Ayuda Pascal


ulisessoad
23-07-2009, 05:11 PM
Hola necesito algun ejemplo en codigo de una ordenacion de un archivo de registro por alguno de sus campos. Por ejemplo se da un archivo alumno con los campo nombre, edad, promedio y division, ordenar al archivo por el campo edad de menor a mayor, mi principal problema es como pasar el archivo a un vector para ordenarlo, no se me ocurre otra manera de hacerlo

Kmax
23-07-2009, 05:50 PM
Con cualquier método de ordenación podes hacer, despues lo unico que tenes que ir comparando entre los registros es el campo por el cual lo queres comparar como la edad. El metodo burbuja es bastante simple de implementar.
Para ordenar un archivo de registros tenes que a medida que lees el original ir creando otro en el orden que queres, seguramente lo tengas que abrir varias veces al original.
Con vector re referis a puntero?

Phobia
23-07-2009, 07:41 PM
Tenés que usar asignación dinámica de memoria para el proceso, ojo con el trashing.
Te copio un ejemplo de un programa de C++ suponiendo de "articulo" es el archivo a ordenar por la descripcion de cada artículo:

******************MAIN*******************
void main()
{
articulo *v;
int cantreg;
cantreg=cuenta_reg();
v=new articulo[cantreg];
if(v==NULL) exit(1);
copiar_archivo(v,cantreg);
ordenar_vector(v,cantreg);
mostrar_vector(v,cantreg);
delete v;
}

///////FUNCIONES////////////

void copiar_archivo(articulo *v,int c)
{
for(int i=0;i<c;i++)
v[i].leer_de_disco(c);

//la función anterior haría un://*********
p=fopen("articulo.dat","rb");
fread(v,sizeof(articulo),c,p);
fclose(p);
}
//*******************************

void mostrar_vector(articulo *v, int c)
{
for(int i=0;i<c;i++)
v[i].mostrar;
}

void ordenar_vector(articulo *v, int c)
{
articulo aux;
int i,j,posmin;
for(i=0;i<c-1;i++)
{
posmin=i;
for(j=i+1;j<c;j++)
{
if(strcmp(v[j].getdescripcion(),v[posmin].getdescripcion())<0)
posmin=j;
}
aux=v[i];
v[i]=v[posmin];
v[posmin]=aux;
}
}

**********Bueno, eso fué todo, lo último es el algoritmo de ordenamiento en burbuja, saludos y gracias por revivir viejos tiempos :D************



Con vector re referis a puntero?
No, el vector es un array, como una sola columna de una matriz, saludos!.-

ulisessoad
24-07-2009, 09:10 AM
bueno chicos gracias por la ayuda aunque no sea pascal voy a ver si puedo resolverlo