Programma semplice con le liste
salve a tutti ho un problema con questo semplice programma sulle liste
Scrivere una funzione maximum che calcola l'elemento più grande di una lista
(chiaramente non devo utilizzare l'algoritmo della libreria standard di c++)
io ho fatto così
Scrivere una funzione maximum che calcola l'elemento più grande di una lista
(chiaramente non devo utilizzare l'algoritmo della libreria standard di c++)
io ho fatto così
#include <string> #include <list> #include <iostream> using namespace std; void maximum(list<string>& staff) { string max=""; list<string>::iterator pos; for(pos=staff.begin();pos!=staff.end();pos++) { max=""; if(*(pos)>max) max=*(pos); } cout<<max<<endl; } int main() { list<string> staff; staff.push_back("Harry"); staff.push_back("Vivian"); staff.push_back("Zack"); staff.push_back("Sam"); staff.push_back("Dick"); cout << "The maximum element in the list is " ; cout<<maximum; return 0; }
Risposte
Che scelta strana quella di usare le stringhe per questo esercizio. In ogni caso il problema è che ad ogni iterazione del ciclo la prima operazione che fai è quella di cancellare il massimo che hai calcolato.. Inizia quindi a levare
dall'interno del ciclo. A quel punto dovrebbe funzionare.
max="";
dall'interno del ciclo. A quel punto dovrebbe funzionare.
ma il programma non funziona comunque
mi dice che il massimo della lista è 1
puoi aiutarmi a capire?
mi dice che il massimo della lista è 1
puoi aiutarmi a capire?
L'errore è che ti sei dimenticato di chiamare la funzione, hai scritto solo il nome della funzione, ma non hai aperto le parentesi e passato l'argomento. Inoltre, maximum non restituisce alcun valore per cui non può essere stampato. Cambia
in
A questo punto a me funziona. Ti copio il codice che a me funziona (a parte le due modifiche che ti ho detto c'è solo la formattazione che cambio in automatico per abitudine prima di leggere ogni codice):
cout<<maximum;
in
maximum(staff);
A questo punto a me funziona. Ti copio il codice che a me funziona (a parte le due modifiche che ti ho detto c'è solo la formattazione che cambio in automatico per abitudine prima di leggere ogni codice):
#include <string> #include <list> #include <iostream> using namespace std; void maximum(list<string>& staff) { string max=""; list<string>::iterator pos; for(pos=staff.begin(); pos!=staff.end(); pos++) { if(*(pos)>max) max=*(pos); } cout<<max<<endl; } int main() { list<string> staff; staff.push_back("Harry"); staff.push_back("Vivian"); staff.push_back("Zack"); staff.push_back("Sam"); staff.push_back("Dick"); cout << "The maximum element in the list is " ; maximum(staff); return 0; }
ok grazie
ho capito
praticamente avevo sbagliato un cout
ho capito
praticamente avevo sbagliato un cout