20/12/2018, 01:04
struct studente{
string id;
string cognome;
string nome;
string indirizzo;
string data;
string sezione;
string ciclo;
};
void load(string filename){
ifstream entrata(filename);
if(not entrata.fail()){
string s("###");
size_t k(lire(s,filename));
/* la funzione "lire" prende due string in parametro, e conta quante volte è presente nel file chiamato "filename" la stringa s, e ritorna quante volte è presente! */
vector<studente> v(k);
for(size_t i(0); i < v.size(); i++){
vector<string> w;
w= ligne("LASTNAME",filename);
/* la funzione "ligne", prende due string in parametro, e ritorna un vector di string composto dalla linea seguente alla quale ha letto "LASTNAME" nel file di nome filename */
v[i].cognome.push_back(w[i]);
w.clear();
w= ligne("FIRSTNAME",filename);
v[i].nome.push_back(w[i]);
w.clear();
w= ligne("ADDRESS",filename);
v[i].indirizzo.push_back(w[i]);
w.clear();
w= ligne("ID",filename);
v[i].id.push_back(w[i]);
w.clear();
w= ligne("BIRTHDATE",filename);
v[i].data.push_back(w[i]);
w.clear();
w= ligne("LASTNAME",filename)
v[i].cognome.push_back(w[i]);
w.clear();
w= ligne("SECTION",filename)
v[i].sezione.push_back(w[i]);
w.clear();
w= ligne("LEVEL",filename)
v[i].ciclo.push_back(w[i]);
w.clear();
}//chisura for
}
entrata.close();
}
double pourcentage(string s, string cs){
vector<studenti> tot;
vector<studenti> ok;
/* in qualche modo qui recupero il vector<studenti> in memoria e la copio in "tot" */
int t(0);
int k(0);
for(size_t i(0); i < tot.size(); i++){
t+=1;
if( (tot[i].sezione == s ) and (tot[i].ciclo == cs) ){
k+=1;
}
}
double percentuale( (100*k)/t );
return percentuale;
}
20/12/2018, 11:22
"non capisco bene cosa voglia dire salvare in memoria. "
size_t k(lire(s,filename));
/* la funzone "lire" prende due string in parametro, e conta quante volte è presente nel file chiamato "filename" la stringa s, e ritorna quante volte è presente! */
w= ligne("LASTNAME",filename);
/* la funzione "ligne", prende due string in parametro, e ritorna un vector di string composto dalla linea seguente alla quale ha letto "LASTNAME" nel file di nome filename */
v[i].cognome.push_back(w[i]);
w.clear();
- leggi una riga (esiste? eof);
- se è un'intestazione ti annoti cosa aspettarti subito dopo, o se è "###" aggiungi un nuovo studente;
- altrimenti valorizzi, per lo studente corrente, il campo corrispondente all'ultima intestazione letta.
Per il terzo, la mia difficoltà sta nel capire come faccio a prendere gli studenti. Nel senso come faccio a recuperare il numero totale di studenti ? Sarebbe la taglia della tabella di studenti che mi sono calcolato precedentemente
20/12/2018, 14:10
typedef vector<studente> tutti;
tutti load(string file){
ifstream entrata(file);
string s("###");
tutti v;
if (entrata.fail()) {
cerr << "Erreur : impossibile leggere "
<< file << endl;
}
if(not entrata.fail()){
string s1("LASTNAME");
string s2("FIRSTNAME");
string s3("ID" );
string s4;
while(entrata)
{
studente a;
if(getline(cin, s1)){
cin >> s4;
a.cognome=s4;
}
if(getline(cin, s2)){
cin >> s4;
a.nome=s4;
}
if(getline(entrata, s3)){
cin >> s4;
a.id=s4;
}
if(getline(entrata, s )){
v.push_back(a);
}
}
}
entrata.close();
return v;
}
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.