Está en la página 1de 3

APLICACIONES DE COLAS Y ARCHIVOS

//colas y archivos #include <iostream.h> #include <conio.h> #include <iomanip.h> #define ruta1 "atendido.dat" #define ruta2 "noatendido.dat" FILE *fp; //variable archivo struct presta{ int numero; char nom[20]; double importe; int meses; }rg; struct nodo{ presta dato; struct nodo *next; }*inicio=NULL ,*ult,*p; void adicion(presta dt){ p=new nodo; p->dato=dt; if(inicio==NULL){ inicio=ult=p; p->next=NULL; }else{ ult->next=p; p->next=NULL; ult=p; } } int genera(){ int num; if(inicio==NULL) num=10001; else num=ult->dato.numero+1; return num; } void ingreso(){ char res; do{ rg.numero=genera(); cout<<"# de prestamo:"<<rg.numero<<endl;

cout<<"nombre:"; cin>>rg.nom; cout<<"importe:"; cin>>rg.importe; cout<<"meses de pago:"; cin>>rg.meses; adicion(rg); cout<<"otro dato s/n:"; cin>>res; }while(res=='s'); } void listado(){ cout<<setw(10)<<"numero"<<setw(20)<<"nombre"<< setw(10)<<"importe"<<setw(10)<<"interes\n"; double interes; p=inicio; while(p!=NULL){ rg=p->dato;//pasar a la variable registro interes=rg.importe*0.01*rg.meses; cout<<setw(10)<<rg.numero<<setw(20)<<rg.nom<< setw(10)<<rg.importe<<setw(10)<<interes<<endl; p=p->next; } }//fin de listado //registra los atendidos void registra1(presta dat){ fp=fopen(ruta1,"ab+"); fwrite(&dat, sizeof(dat),1,fp); fclose(fp); } void registra2(presta dat){//no atendidos fp=fopen(ruta2,"ab+"); fwrite(&dat, sizeof(dat),1,fp); fclose(fp); } void pop(){//quitar nodos de la lista o antender if(inicio==NULL) return; p=inicio;//se ubica en el primer nodo inicio=inicio->next;//avanza el puntero registra1(p->dato);//graba en el archivo cout<<"\n registro atendido:"<<p->dato.numero; free(p);//lo libera de la memoria } void grabanoatendido(){ p=inicio; //grabar los datos de la lista

while(p!=NULL){ registra2(p->dato); p=p->next; } cout<<"\n registros no atendidos grabados\n"; } void cargardatos(){ fp=fopen(ruta2,"rb"); if(fp==NULL) return; fread(&rg,sizeof(rg),1,fp);//lee registro while(!feof(fp)){ adicion(rg); fread(&rg,sizeof(rg),1,fp);//lee registro } fclose(fp); } main(){ int op; cargardatos(); do{ cout<<"\n 1.- ingreso de datos"; cout<<"\n 2.- Listado de datos"; cout<<"\n 3.- Solicitud atendida"; cout<<"\n 5.- salir"; cout<<"\n ingrese opcion :"; cin>>op; switch(op){ case 1:ingreso(); break; case 2:listado(); break; case 3:pop(); break; } }while(op!=5); grabanoatendido(); //grabar los datos }

También podría gustarte