Ciao a tutti,
vorrei chiedervi un aiuto riguardo la scrittura di una funzione.
(Tratto da un tema d'esame) Ho due files: nuclei.dat e elettroni.dat . Il primo è composto da quintuple di dati, che tratto con una struct, e il secondo da terne di dati.
Per leggerli entrambi ho dovuto dichiarare due diversi ifstream.
(Riporto uno spezzone di codice che mostra la mia situazione)
struct atomo{
float x;
float y;
int charge;
float r;
int n_elec;
};
struct elec{
float x;
float y;
bool is_free;
};
int main(){
ifstream in_atomi;
ifstream in_elec;
ofstream out;
in_atomi.open("nuclei.dat");
out.open("risultati.dat");
int k= linecount_atomi(in_atomi);
atomo *A=new atomo[k];
//carico il vettore di atomi con i dati
for(int i=0; i<k; i++){
in_atomi>>A[i].x>>A[i].y>>A[i].charge>>A[i].r>>A[i].n_elec;
}
//carico il vettore elettroni
in_elec.open("elettroni.dat");
int e=linecount_elec(in_elec);
elec *E=new elec[e];
for(int i=0; i<e; i++){
in_elec>>E[i].x>>E[i].y>>E[i].is_free;
}
return 0;
}
int linecount_atomi(ifstream &in_atomi){
string s;
int k=0;
getline(in_atomi, s);
while(!in_atomi.eof()){
k++;
getline(in_atomi, s);
}
return k;
}
int linecount_elec(ifstream &in_elec){
string s;
int e=0;
getline(in_elec, s);
while(!in_elec.eof()){
e++;
getline(in_elec, s);
}
return e;
}
Ora la mia domanda è: come potrei scrivere una funzione con cui decido quale file aprire dei due e leggerlo?