View Full Version : [c++] stampare lista di oggetti
mistergks
24-06-2013, 18:22
Ciao raga! Devo stampare una lista restituita da una funzione..
Però non posso ridefinire nessun operatore perche l'esercizio non lo permette!
Come faccio? Esiste un modo per farlo dal main?
Ecco la traccia e la funzione risolta:
* Restituisce la lista dei carichi piu' costosi,
* nello stesso ordine in cui sono presenti nel magazzino.
* Il costo del carico dipende dal
* "costo al chilogrammo" e dal numero di "chilogrammi".
*/
list Fruttivendolo::carichiPiuCostosi()
{
int costoCaricoPiuCostoso = 0;
list carichiCostosi;
for(list::iterator it = magazzino.begin(); it != magazzino.end(); it++)
{
int costoCaricoCorrente = (*it).getCostoAlKg() * (*it).getChilogrammi();
if(costoCaricoCorrente > costoCaricoPiuCostoso)
{
carichiCostosi.clear(); //corretto????
carichiCostosi.push_back(*it);
costoCaricoPiuCostoso = costoCaricoCorrente;
}
else if (costoCaricoCorrente == costoCaricoPiuCostoso)
{
carichiCostosi.push_back((*it));
}
}
return carichiCostosi;
}
Un'altra cosa:
É corretto l'utilizzo della funzione clear() in questo caso?
mistergks
24-06-2013, 20:38
Ciao raga! Devo stampare una lista restituita da una funzione..
Però non posso ridefinire nessun operatore perche l'esercizio non lo permette!
Come faccio? Esiste un modo per farlo dal main?
Ecco la traccia e la funzione risolta:
* Restituisce la lista dei carichi piu' costosi,
* nello stesso ordine in cui sono presenti nel magazzino.
* Il costo del carico dipende dal
* "costo al chilogrammo" e dal numero di "chilogrammi".
*/
list Fruttivendolo::carichiPiuCostosi()
{
int costoCaricoPiuCostoso = 0;
list carichiCostosi;
for(list::iterator it = magazzino.begin(); it != magazzino.end(); it++)
{
int costoCaricoCorrente = (*it).getCostoAlKg() * (*it).getChilogrammi();
if(costoCaricoCorrente > costoCaricoPiuCostoso)
{
carichiCostosi.clear(); //corretto????
carichiCostosi.push_back(*it);
costoCaricoPiuCostoso = costoCaricoCorrente;
}
else if (costoCaricoCorrente == costoCaricoPiuCostoso)
{
carichiCostosi.push_back((*it));
}
}
return carichiCostosi;
}
Un'altra cosa:
É corretto l'utilizzo della funzione clear() in questo caso?
Up
Su che libro stai studiando?
Vedendo list usato senza specificare alcun tipo, il fatto che non sai se devi chiamare o meno il metodo clear, e non sapere come stampare una lista a terminale ma poi dimostri di sapere dell'overload degli operatori o come usare gli iteratori...mi fa venire il dubbio che hai una conoscenza molto frammentaria di C++
mistergks
25-06-2013, 09:31
Perché ho incollato solo un pezzetto di codice! La lista é dichiarata in un altro file! Il problema non é questo..
Comunque studio su deitel&deitel
Il problema di stampare il contenuto della lista, non capisco quale sia
Le 3 strade più comuni sono:
- Un metodo void print() nella classe carico che stampa direttamente a terminale il singolo elemento carico, iteri sulla lista e richiamare quel metodo
- Un metodo const std::string to_string() nella classe carico che emula l'operatore operator std::string, iteri su ogni elemento e passi a cout il risultato di to_string
- Iteri sulla lista e gestisci direttamente dentro al for la serializzazione di carico in testo
Dato che non puoi definire i tuoi operatori, non credo ci siano altri metodi
mistergks
25-06-2013, 15:41
Il problema di stampare il contenuto della lista, non capisco quale sia
Le 3 strade più comuni sono:
- Un metodo void print() nella classe carico che stampa direttamente a terminale il singolo elemento carico, iteri sulla lista e richiamare quel metodo
- Un metodo const std::string to_string() nella classe carico che emula l'operatore operator std::string, iteri su ogni elemento e passi a cout il risultato di to_string
- Iteri sulla lista e gestisci direttamente dentro al for la serializzazione di carico in testo
Dato che non puoi definire i tuoi operatori, non credo ci siano altri metodi
Non posso definire nemmeno nuove funzioni! Posso solo scrivere qualsiasi cosa nel main e implementare le funzioni che mi da la traccia
mistergks
26-06-2013, 23:00
Non posso definire nemmeno nuove funzioni! Posso solo scrivere qualsiasi cosa nel main e implementare le funzioni che mi da la traccia
Up
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.