Ragazzi ho un piccolo problema con una funzione che deve mostrare un oggetto con più prestiti, confrontandolo con dei record presenti in un file.
Siccome può capitare che due o più record abbiano la stessa quantità di prestiti, la funzione cerca prima il più grande e poi lo riconfronta stampando tutti quelli che hanno lo stesso numero.
Forse con il codice riesco a spiegarmi meglio:
I metodi della classe funzionano e sono testati, get_libro() serve a stampare a video la scheda del libro.codice:void piu_pres(){ libro current; libro max; system("CLS"); ifstream lib("Libri", ios::in | ios::binary); if(!lib){ cout<<endl<<"Impossibile aprire il file"; abort(); } lib.read((char*)¤t, sizeof(libro)); max=current; while(!lib.eof()){ if(max.get_prest() < current.get_prest()) max=current; lib.read((char*)¤t, sizeof(libro)); } lib.seekg(ios::beg); lib.read((char*)¤t, sizeof(libro)); cout<<"Il/i lettore/i con piu' prestiti e'/sono:"<< endl << endl; while(!lib.eof()){ cout<<endl; if(max.get_prest() == current.get_prest()) current.get_libro(); lib.read((char*)¤t, sizeof(libro)); } in.close(); lib.close(); system("pause"); }
In pratica su una lista di libri si deve stampare quello o quelli con più prestiti.
Dopo la prima lettura deve effettuarne un altra, il puntatore messo in ios::beg mostra la posizione -1, ma poi la read() non legge e non capisco perché.
Vi chiedo un consiglio o magari se conoscete un algoritmo migliore...
Vi ringrazio anticipatamente