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:
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");
}
I metodi della classe funzionano e sono testati, get_libro() serve a stampare a video la scheda del libro.
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