Creacion de registros al azar:
//creacion registros al azar
#include <iostream.h>
#include <map.h>
#include<stdio.h>
#include <time.h>
#include<conio.h>
using namespace std;
typedef unsigned int direc;
typedef unsigned int dni;
void inserta(map<dni,direc,less<dni> >&,dni,direc);
void buscar(map<dni,direc,less<dni> >,dni,direc &);
void guarda(map<dni,direc,less<dni> >);
void creacion(map<dni,direc,less<dni> >&,int cuantos);
FILE *pclave;
FILE *datos;
FILE *indice;
FILE * lapila;
typedef struct ficha
{
dni clave;
char apellido[40];
char nombre [30];
int antiguedad;
int kms;
int importe;
}PERSONA;
void main (void)
{
randomize();
clrscr();
int max;
dni busc;
direc registro;
PERSONA tmp;
lapila=fopen("lapila.txt","w+b");
fclose(lapila);
datos=fopen("datos.txt","w+b");
map<dni, direc, less<dni> > m;
map<dni, direc, less<dni> >::iterator pos;
cout <<"cuantos registros deseas crear?:"<<endl;
cin >> max;
creacion(m,max);
indice=fopen("indice.txt","w+b");
fprintf(indice,"%d %d\n",max,0);
fclose(indice);
guarda(m);
fclose(datos);
fclose(indice);
fclose(pclave);
}// fin de main
void inserta(map<dni,direc,less<dni> >& m,dni alfa,direc beta)
{
m.insert(pair<dni,direc>(alfa,beta));
} // fin de inserta
void buscar(map<dni,direc,less<dni> > m,dni alfa,direc & registro)
{
map<dni, direc, less<dni> >::iterator i;
map<dni, direc, less<dni> >::iterator j;
i=m.find(alfa);
if (i!=m.end())
registro= (*i).second;
else
registro= 0;
} // fin de busca
void guarda(map<dni,direc,less<dni> > m)
{
map<dni, direc, less<dni> >::iterator inicio,final;
inicio=m.begin();
final=m.end();
pclave=fopen("claves.txt","w+b");
for(inicio=m.begin();inicio!=m.end();inicio++)
fprintf(pclave,"%d %d\n",(*inicio).first,(*inicio).second);
} // fin de guarda
void creacion(map<dni,direc,less<dni> >& m,int cuantos)
{
dni d1;
direc d2;
int t;
PERSONA tmp;
char nom[10][30]={"Jose","David","Pedro","Maria","Carlos","Susana","Vicente","Manuel","Sergio","Ana"};
char apel[10][30]={"Garcia","Gonzalez","Martinez","Perez","Alvarez","Gimeno","Vazquez","Madrid","Rodriguez","Calvo"};
// Introducción de elementos
cout <<"creando....."<< endl;
for (t=1;t<=cuantos;t++)
{
do
{
d1=random(99000000)+ 1;
d2=t;
}while (m.find(d1)!=m.end());
// inserto en el mapa
inserta (m,d1,t);
// inserto en el archivo
strcpy(tmp.nombre,nom[random(10)]);
strcpy(tmp.apellido,apel[random(10)]);
tmp.antiguedad=random(40)+1;
tmp.kms=random(5000)+200;
tmp.importe=random(800)+20;
tmp.clave=d1;
fseek(datos,(d2-1)*sizeof(PERSONA),0);
fwrite(&tmp,sizeof(PERSONA),1,datos);
//if (d1 % 100000==0)
// cout << d1<<endl;
}
cout <<"creado...."<<endl;
} // fin de creacion