|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - lorekilia
Páginas: [1]
1
« en: Jueves 22 de Mayo de 2008, 23:07 »
Muchas gracias por tu respuesta, me voy a poner manos a la obra a ver si me sale bien, tengo ya ganas de que me salga Un saludo y muchas gracias de nuevo
2
« en: Jueves 22 de Mayo de 2008, 09:51 »
Hola, a ver si me pueden ayudar con un problema al ordenar un fichero. Es la primera vez que lo hago y no tengo mucha idea la verdad. Quiero crear un fichero de control de los viajantes de una empresa para cada registro se controlaran el dni (8 digitos), nombre y apellidos,antiguedad, kms realizados e importe total de las ventas. El de crear los registros creo que lo he hecho bien solo que nose como hacer para que el dni solo tenga 8 digitos (si me lo pueden decir les estaria muy agradecida) y luego quiero hacer otro programa para que saque un listado ordenado de menor a mayor de los diez viajantes que mas han vendido.El codigo que he hecho para ordenarlos me compila pero no me va y ya nose como hacerlo y seguramente lo he hecho fatal Echenme una mano porfavor. Les dejo los codigos que tengo: 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
Ordenacion de los diez viajantes que mas han vendido de menor a mayor: #include <stdio.h> #include <conio.h> //ordenacion #include<string.h> #include<stdlib.h> #include<iostream> #include <map> #include<time.h> #define numreg 10000 #define max 10 using namespace std; typedef struct ficha { int dni; char apellido[30]; char nombre [30]; int antiguedad; int kms; int importe; }PERSONA; typedef multimap< float, int, greater<float> > ventas; FILE * lapila; main() { PERSONA datos; ventas ordenado; ventas :: iterator pos; float venta; int reg; clock_t q1,q2; lapila = fopen("lapila.txt","r+b"); // tomamos tpos de ordenacion = llenado del mapa q1=clock(); for (reg=1;reg<=10;reg++) { fseek(lapila,(reg-1)*sizeof(datos),0); fread(&datos,sizeof(datos),1,lapila); venta =(datos.importe); ordenado.insert(pair<float,int>(venta,reg)); } q2=clock(); cout <<"tipo de ordenaciones:"<<(q2-q1)/CLK_TCK; getch(); clrscr(); for (pos = ordenado.begin (); pos!= ordenado.end(); pos ++) { reg=(*pos).second; fseek(lapila,(reg-1)*sizeof(datos),0); fread(&datos,sizeof(datos),1,lapila); cout.width(12); cout.setf(ios::left); cout << "Nombre:"; cout.width(10); cout.setf(ios::left); cout<<datos.nombre; cout.width(10); cout<<"importe:"; cout.width(6); cout.precision(2); cout<<(*pos).first; cout.width(4); cout<<"Reg:"; cout<<reg; cout<<endl; } fclose(lapila); }
Páginas: [1]
|
|
|