Ultima modifica:
avendo una lista contenente item fatti così : <anno , tempo , nome , luogo> , devo scrivere un codice che per ciascun <luogo> presente nella lista L1 (senza ripetizioni) stampi il numero totale di atleti che hanno quel <luogo> come attributo. Si possono utilizzare liste di appoggio , quindi io ho creato una lista L2 ( inizialmente vuota ) di tipo conteggio , cioè’ fatta di item ( che ho chiamato conteggio ) nel formato ( luogo , count ). Dove count e’ la somma delle gare disputate in quel luogo.
per esempio avendo L1 < (2009,9.58,Usain Bolt,Berlin) (2012,9.63,Usain Bolt,London) (2008,9.69,Usain Bolt,Beijing) (2007,9.74,Asafa
Powell,Rieti) (2014,9.56,Usain Bolt,London)| >
dovrei ottenere
London 2
Beijing 1
Berlin 1
Rieti 1
mentre io ottengo
London 1
London 1
Beijing 1
Berlin 1
Rieti 1
per esempio avendo L1 < (2009,9.58,Usain Bolt,Berlin) (2012,9.63,Usain Bolt,London) (2008,9.69,Usain Bolt,Beijing) (2007,9.74,Asafa
Powell,Rieti) (2014,9.56,Usain Bolt,London)| >
dovrei ottenere
London 2
Beijing 1
Berlin 1
Rieti 1
mentre io ottengo
London 1
London 1
Beijing 1
Berlin 1
Rieti 1
C++:
Item it1;
conteggio it2;
conteggio i;
conteggio l;
int conta = 0;
LList<conteggio> L2;
string luogo;
for (L1.moveToStart(), L2.moveToStart(); L1.currPos() < L1.length() && L2.currPos() < L2.length(); L1.next(), L2.next()) {
it1 = L1.getValue();
it2 = L2.getValue();
if (it1.getluogo() == it2.getluogo())
{
luogo = it1.getluogo();
conta = conta + 1 ;
}
else {
luogo = it1.getluogo();
conta = 1 ;
}
conteggio i(luogo, conta);
L2.insert(i);
}
for (; L1.currPos() < L1.length(); L1.next()) {
it1 = L1.getValue();
luogo = it1.getluogo();
if (it1.getluogo() == it2.getluogo())
{
conta = conta + 1;
}
else { conta = 1; }
conteggio i(luogo, conta);
L2.append(i);
}